Maison >base de données >tutoriel mysql >L'ordre des lignes `SELECT * FROM table_name` de MySQL est-il garanti ?
Ordre des lignes MySQL pour "SELECT * FROM table_name"
Dans MySQL, l'ordre des lignes renvoyées par "SELECT * FROM table_name ; " La requête, qui ne contient pas de clause ORDER BY, n'est pas garantie. Le moteur SGBDR détermine l'ordre en fonction de ses détails d'implémentation internes.
Absence de garanties
Contrairement à l'ordre d'insertion, MySQL ne fournit aucune garantie que les lignes récupérées seront dans le même ordre que lors de leur insertion dans le tableau. Le portage d'une application vers un autre SGBDR ou la mise à niveau des versions de MySQL peut entraîner des modifications dans l'ordre de récupération des lignes.
L'ordre par défaut dans InnoDB
Le moteur de stockage InnoDB peut renvoyer des lignes dans l'ordre dans lequel ils sont lus à partir de l'index. Cependant, l'ordre peut varier en fonction de l'index utilisé par l'optimiseur.
Variations pour différents moteurs de stockage
Différents moteurs de stockage ont des implémentations différentes qui peuvent affecter la ligne par défaut commande. Par exemple :
Dans le cas de MyISAM, les lignes occupent des espaces de stockage contigus. La suppression de lignes crée des espaces qui peuvent être réutilisés dans l'ordre inverse lors de l'insertion de nouvelles lignes. Par conséquent, l'ordre des lignes dans MyISAM n'est pas non plus strictement basé sur l'ordre d'insertion.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!