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

MySQL, ordre d'insertion ORDER BY, pas de colonnes de tri

Il n'y a aucune garantie que les lignes seront retournées dans un ordre particulier sans un ORDER BY clause dans la requête.

Considérez une requête simple qui renvoie toutes les colonnes de toutes les lignes d'une table. Par exemple :

SELECT * FROM mytable ; 

Pour cette requête, il est probable que MySQL effectuera une analyse complète de la table, depuis le début de la table. Il est donc probable que les lignes seront renvoyées dans l'ordre dans lequel elles se trouvent dans le stockage physique.

Cela peut correspondre à peu près à l'ordre dans lequel les lignes ont été insérées, s'il n'y a eu aucune suppression, aucune mise à jour et aucune réorganisation, où l'espace pour une ligne insérée a ensuite été récupéré et réutilisé pour stocker une ligne nouvellement insérée.

Mais ce comportement n'est PAS garanti.

Pour renvoyer les lignes dans l'ordre dans lequel elles ont été insérées, la requête doit spécifier la séquence dans laquelle les lignes doivent être renvoyées, en incluant un ORDER BY clause.

Pour que les lignes soient renvoyées dans "l'ordre d'insertion", cela signifie que la requête doit pouvoir disposer de ces informations ou pouvoir les dériver. Pour une requête simple sur une seule table, cela signifie que les informations doivent être stockées dans la ligne.