Ich bezweifle die Geschwindigkeit und das Ergebnis der unten stehenden Abfragen. Kann mir jemand die Erklärung geben? (Diese Abfragen für Oracle-Datenbank geschrieben)Leistung zwischen SELECT MAX (col_name) und ROWNUM = 1
Sagen wir, ich habe eine Tabelle table1 (ID, itemID, trnx_date, Balance, ...). Ich möchte das letzte Guthaben eines Artikels erhalten.
Abfrage 1:
SELECT Saldo aus Tabelle 1 WHERE ID = (SELECT MAX (ID) von Tabelle 1 WHERE itemID = ITEM_ID);
Abfrage 2:
SELECT Saldo aus Tabelle 1 WHERE itemID = ITEM_ID UND rownum = 1 ORDER BY ID DESC;
wo ITEM_ID ist die Variable.
Also geben diese beiden Abfragen das gleiche Ergebnis? Und welche ist schneller oder gibt es eine andere Abfrage, die schneller ist als sie?
Dank
Danke Eric für Ihre Antwort, aber wie ich weiß, ist die Prozessreihenfolge der SELECT-Anweisung FROM, WHERE, ORDER BY, dann SELECT. Wenn also die Bedingung gefunden wird, wird sie aufhören, Datensätze zu finden (wegen ROWNUM = 1) und dann das Ergebnis sortieren, so dass das Ergebnis nicht dasselbe sein wird. Ich habe eine andere Tabelle Daten getestet, und das Ergebnis ist anders !!! –