Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL, ORDER BY-Einfügungsreihenfolge, keine Sortierspalten

Es gibt keine Garantie dafür, dass Zeilen ohne ORDER BY in einer bestimmten Reihenfolge zurückgegeben werden -Klausel in der Abfrage.

Stellen Sie sich eine einfache Abfrage vor, die alle Spalten aller Zeilen in einer Tabelle zurückgibt. Zum Beispiel:

SELECT * FROM mytable ; 

Für diese Abfrage führt MySQL wahrscheinlich einen vollständigen Tabellenscan vom Anfang der Tabelle aus durch. Daher ist es wahrscheinlich, dass die Zeilen in der Reihenfolge zurückgegeben werden, in der sie sich im physischen Speicher befinden.

Dies kann ungefähr der Reihenfolge entsprechen, in der Zeilen eingefügt wurden, wenn es keine Löschungen, keine Aktualisierungen und keine Reorganisation gegeben hat, wobei Platz für eine eingefügte Zeile später zurückgefordert und wiederverwendet wurde, um eine neu eingefügte Zeile zu speichern.

Dieses Verhalten wird jedoch NICHT garantiert.

Um die Zeilen in der Reihenfolge zurückzugeben, in der sie eingefügt wurden, muss die Abfrage die Reihenfolge angeben, in der die Zeilen zurückgegeben werden sollen, indem ein ORDER BY eingefügt wird Klausel.

Damit die Zeilen in "Einfügungsreihenfolge" zurückgegeben werden, muss die Abfrage diese Informationen verfügbar haben oder ableiten können. Für eine einfache Abfrage einer einzelnen Tabelle bedeutet dies, dass die Informationen in der Zeile gespeichert werden müssen.