Ich habe einen riesigen Tisch, mit dem ich arbeiten kann. Ich möchte überprüfen, ob es einige Datensätze gibt, deren Parent_id meinem übergebenen Wert entspricht. derzeit, was ich dies implementieren, ist mit "wählen Sie Anzahl (*) aus meiner Tabelle, wo parent_id =: id"; Wenn das Ergebnis> 0 ist, bedeutet das, dass sie existieren.Der schnellste Weg zu überprüfen, ob einige Datensätze in einer Datenbanktabelle sind?
Da dies eine sehr große Tabelle ist, und mir egal ist, was die genaue Anzahl der Datensätze ist, möchte ich nur wissen, ob es existiert, also denke ich count (*) ist ein bisschen ineffizient.
Wie kann ich diese Anforderung am schnellsten umsetzen? Ich bin mit Oracle 10.
#Nach Tipps & Tricks https://www.hibernate.org/118.html#A2
es so zu schreiben, schlägt vor, in den Ruhezustand:
Integer count = (Integer) session.createQuery ("select count (*) from .... "). uniqueResult();
Ich weiß nicht, was ist die Magie von uniqueResult() hier? Warum macht es das schnell?
Vergleichen Sie mit "wählen Sie 1 aus meiner Tabelle, wo parent_id = passingId und rowrum < 2", die effizienter ist?
Sie brauchen nicht einmal DUAL abzufragen - wählen Sie Y aus mytable aus, wobei parent_id =: id AND ROWNUM = 1' identische Ergebnisse liefert. –
Yep - mag einfach nicht "ROWNUM = 1" - fühlt sich nicht so transparent an wie eine EXISTS-Abfrage. Nur ich auch. –