Ein Programmierer testet und vergleicht dieselbe Anwendung, die dieselbe Datenbankstruktur und dieselben Daten verwendet, nur in zwei separaten Datenbanken, eine mit Oracle 8 und eine mit Oracle 9.
Die App führt eine Abfrage ohne ORDER BY
Klausel aus.
Er behauptet, dass die ORDER-BY-less-Abfrage die Zeilen in beiden Datenbanken in derselben Reihenfolge zurückgeben sollte.
Ich sage ihm, dass es keine Garantie für dieselbe Zeilenreihenfolge gibt, es sei denn, Sie geben ausdrücklich eine ORDER BY-Klausel an.
Die Datenbank hat dieselben Indizes und Schlüssel. Der EXPLAIN-Plan zeigt jedoch, dass die Engine in einer der Datenbanken den Schlüssel einer der verknüpften Tabellen verwendet, während sie in der anderen Datenbank den Schlüssel einer anderen verwendet.
Er unterstellt, dass die beiden DB-Umgebungen nicht gleich sind, weil sie unterschiedliche Statistiken, unterschiedliche rdbms-Engines usw. haben, aber nicht, weil ich nicht jeden Index der ursprünglichen Datenbank replizieren konnte.
Ich sage ihm, dass er explizit eine ORDER BY
Klausel vorlegen muss, wenn die Reihenfolge wirklich so wichtig ist.
Die Frage
So kann ich ihn besser erklären:
In welcher Reihenfolge ruft eine Abfrage Zeilen ab, wenn Sie keine ORDER BY-Klausel explizit angeben, und warum gibt diese Abfrage die Zeilen nicht in derselben Reihenfolge zurück?