Ordre des lignes imprévisible dans les requêtes de sélection PostgreSQL après modification des données
Lors de l'exécution d'une requête SELECT sans spécifier de clause ORDER BY dans PostgreSQL, le résultat les lignes sont généralement récupérées dans l'ordre dans lequel elles sont stockées physiquement sur le disque. Cependant, cet ordre par défaut peut changer de manière inattendue après avoir effectué des modifications de données telles que des mises à jour ou des insertions.
Considérons l'exemple suivant :
postgres=# select * from check_user; id | name ----+------ 1 | x 2 | y 3 | z 4 | a 5 | c1 6 | c2 7 | c3 (7 rows) postgres=# update check_user set name = 'c1' where name = 'c1\'; UPDATE 1 postgres=# select * from check_user; id | name ----+------ 1 | x 2 | y 3 | z 4 | a 6 | c2 7 | c3 5 | c1 (7 rows)
Avant de mettre à jour la ligne 5, les lignes étaient renvoyées par ordre croissant. par identifiant. Cependant, après l'opération de mise à jour, la position de la ligne 5 a changé, entraînant un ordre différent.
Explication :
Ce comportement est dû aux mécanismes internes de gestion de PostgreSQL stockage et récupération des données.
Conclusion :
Il est important de noter que s'appuyer sur le comportement de classement par défaut dans PostgreSQL peut conduire à des résultats inattendus. Pour garantir un ordre cohérent des lignes, spécifiez toujours une clause ORDER BY explicite dans vos requêtes SELECT. Alternativement, si vous avez besoin que l'ordre des lignes soit cohérent après les modifications des données, vous pouvez créer un index sur la colonne de tri souhaitée.
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!