Maison > Article > base de données > Comment résoudre le piège de la commande MySQL par limite
Pièges rencontrés lors de l'exécution de requêtes de pagination :
Problème découvert : après avoir trié un seul champ non indexé, une limite a été trouvée. Il a été constaté que lorsque les champs triés ont la même valeur et sont dans la plage limite, la valeur prise n'est pas la valeur après le tri normal,
Autrement dit, lorsque les données classées dans la ligne N peuvent être clé1 ou clé2, le résultat du tri peut être clé1 ou clé2.
Trier + limiter les résultats (clé de tri sans index)
Appuyez sur cnt pour obtenir le mot-clé et obtenir les trois premiers résultats :
Texte original :
Si plusieurs lignes ont des valeurs identiques dans les colonnes ORDER BY, le serveur est libre de renvoyer ces lignes dans n'importe quel ordre, et peut le faire différemment en fonction du plan d'exécution global. En d'autres termes, l'ordre de tri de ces lignes n'est pas déterministe. par rapport aux colonnes non ordonnées.
Cela signifie que si les colonnes de order by ont la même valeur, mysql sélectionnera aléatoirement ces lignes, qui varieront en fonction du plan d'exécution.
Solution : La colonne order by contient une colonne d'index
Ajoutez l'identifiant de la clé primaire ici comme colonne de tri
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!