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

SQL:Was ist die standardmäßige Sortierung nach von Abfragen?

Eine solche Anordnung liegt nicht vor. Aus http://forums.mysql.com/read .php?21,239471,239688#msg-239688

  • Verlassen Sie sich nicht auf die Reihenfolge, wenn ORDER BY fehlt.

  • Geben Sie immer ORDER BY an, wenn Sie eine bestimmte Reihenfolge wünschen – in manchen Situationen kann die Engine ORDER BY eliminieren, weil sie einen anderen Schritt ausführt.

  • GROUP BY erzwingt ORDER BY. (Dies ist ein Verstoß gegen den Standard. Dies kann durch die Verwendung von ORDER BY NULL vermieden werden.)

SELECT * FROM tbl -- dies führt einen "Tabellen-Scan" durch. Wenn die Tabelle noch nie DELETEs/REPLACEs/UPDATEs hatte, befinden sich die Datensätze zufällig in der Einfügungsreihenfolge, daher das, was Sie beobachtet haben.

Wenn Sie dieselbe Anweisung mit einer InnoDB-Tabelle ausgeführt hätten, wären sie in der PRIMARY KEY-Reihenfolge geliefert worden, nicht in der INSERT-Reihenfolge. Auch dies ist ein Artefakt der zugrunde liegenden Implementierung, nicht etwas, auf das man sich verlassen kann.