Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL :quel est le tri par défaut des requêtes ?

Il n'y a pas un tel ordre présent. Extrait de http://forums.mysql.com/read .php?21,239471,239688#msg-239688

  • Ne dépend pas de la commande lorsque ORDER BY est manquant.

  • Spécifiez toujours ORDER BY si vous voulez un ordre particulier - dans certaines situations, le moteur peut éliminer ORDER BY en raison de la façon dont il effectue une autre étape.

  • GROUP BY force ORDER BY. (Ceci est une violation de la norme. Cela peut être évité en utilisant ORDER BY NULL.)

SELECT * FROM tbl -- cela fera un "balayage de table". Si la table n'a jamais eu de DELETE/REPLACE/UPDATE, les enregistrements se trouveront dans l'ordre d'insertion, d'où ce que vous avez observé.

Si vous aviez fait la même instruction avec une table InnoDB, elles auraient été livrées dans l'ordre PRIMARY KEY, et non dans l'ordre INSERT. Encore une fois, il s'agit d'un artefact de l'implémentation sous-jacente, pas de quelque chose dont dépendre.