5.2 Optimisation des SELECT s et autres requêtes
5 Optimisation de MySQL
Manuel de Référence MySQL 4.1 : Version Française
. Syntaxe de EXPLAIN (Obtenir des informations sur les SELECT ) . Mesurer les performances d'une requête . Vitesse des requêtes SELECT . Comment MySQL optimise les clauses WHERE . Comment MySQL optimise la clause DISTINCT . Comment MySQL optimise LEFT JOIN et RIGHT JOIN . Comment MySQL optimise les clauses ORDER BY ->Comment MySQL optimise la clause LIMIT . Vitesse des requêtes INSERT . Vitesses des commandes UPDATE . Rapidité des requêtes DELETE . Autres conseils d'optimisation
|
5.2.8 Comment MySQL optimise la clause LIMIT
Dans certains cas, MySQL va gérer la requête différemment avec la clause
LIMIT #
, si la clause
HAVING
n'est pas utilisée :
-
Si vous ne sélectionnez que quelques lignes avec
LIMIT
, MySQL
va utiliser les index dans certains cas, où il aurait préféré utiliser
un scan de table complet.
-
Si vous utilisez
LIMIT #
avec la clause
ORDER BY
, MySQL va arrêter
de trier dès qu'il a trouvé la première
#
au lieu de trier toute la
table.
-
Lorsque vous combinez
LIMIT #
avec
DISTINCT
, MySQL va s'arrêter
dès qu'il a trouvé
#
lignes distinctes.
-
Dans certains cas, la clause
GROUP BY
peut être appliquée en lisant les
clés dans l'ordre (ou en faisant un tri sur la clé), puis en calculant
un sommaire, jusqu'à ce que la clé soient modifiée. Dans ce cas,
LIMIT #
ne va pas appliquer les éléments non nécessaires de la
clause
GROUP BY
s.
-
Aussitôt que MySQL a envoyé les premières
#
lignes au client, il
annule le reste de la requête (si vous n'utilisez pas la fonction
SQL_CALC_FOUND_ROWS
).
-
LIMIT 0
va toujours retourner rapidement un résultat vide. C'est
pratique pour vérifier une requête et lire les types de colonnes du résultat,
sans exécuter réellement la requête.
-
Lorsque le serveur utilise des tables temporaire pour résoudre les requêtes,
la clause
LIMIT #
est utilisée pour calculer l'espace nécessaire.
|