Maison > base de données > tutoriel mysql > Comment la gestion de ORDER BY dans les sous-requêtes par MariaDB a-t-elle changé et quelle est la solution recommandée ?

Comment la gestion de ORDER BY dans les sous-requêtes par MariaDB a-t-elle changé et quelle est la solution recommandée ?

Linda Hamilton
Libérer: 2024-12-31 15:38:16
original
742 Les gens l'ont consulté

How Has MariaDB's Handling of ORDER BY in Subqueries Changed, and What's the Recommended Solution?

Modification de l'optimisation des requêtes MySQL/MariaDB : Trier par dans les sous-requêtes

Lors d'une requête avec MySQL 5.5 ou version antérieure, la clause ORDER BY d'une sous-requête a été appliquée avant le SELECT de la requête la plus externe. Cependant, dans MariaDB 10.0.14, ce comportement a changé et les clauses ORDER BY des sous-requêtes sont désormais ignorées lorsqu'aucune LIMIT n'est présente.

Pour résoudre ce problème, MariaDB recommande d'appliquer la clause ORDER BY à la requête la plus externe ou d'utiliser LIMIT dans la sous-requête.

Documenté Behavior

La documentation de MariaDB indique que les sous-requêtes de la clause FROM sont des ensembles de lignes non ordonnés et que les clauses ORDER BY sont généralement ignorées dans ce contexte. La citation suivante de la documentation fournit plus de détails :

"Une "table" (et une sous-requête dans la clause FROM également) est - selon la norme SQL - un ensemble non ordonné de lignes. Les lignes d'une table (ou dans une sous-requête de la clause FROM) n'apparaissent pas dans un ordre spécifique. C'est pourquoi l'optimiseur peut ignorer la clause ORDER BY que vous avez spécifiée. En fait, le standard SQL n'autorise même pas l'apparition de la clause ORDER BY dans celle-ci. sous-requête (nous l'autorisons, car ORDER BY ... LIMIT ... modifie le résultat, l'ensemble des lignes, pas seulement leur ordre)."

Par conséquent, il est suggéré de traiter les sous-requêtes comme des ensembles non ordonnés et pour placer des clauses ORDER BY dans les requêtes les plus externes ou utiliser LIMIT si nécessaire.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal