Maison >base de données >tutoriel mysql >L'ordre des lignes `SELECT * FROM table_name` de MySQL est-il garanti ?

L'ordre des lignes `SELECT * FROM table_name` de MySQL est-il garanti ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-05 03:46:09202parcourir

Is MySQL's `SELECT * FROM table_name` Row Order Guaranteed?

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 :

  • MyISAM : Stocke généralement les lignes dans l'ordre d'insertion.
  • InnoDB : Les lignes peuvent être stockées par ordre de clé primaire ou index.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn