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.3 Vitesse des requêtes SELECT
En général, lorsque vous voulez rendre un
SELECT ... WHERE
plus rapide,
la première chose à faire est de voir si vous pouvez ajouter des index. Comment MySQL utilise les index . Toutes les références entre les tables doivent
normalement être faites avec des index. Vous pouvez utiliser la commande
EXPLAIN
pour déterminer les index utilisés pour le
SELECT
.
Syntaxe de
EXPLAIN
(Obtenir des informations
SELECT
) .
Quelques conseils généraux :
-
Pour aider MySQL à mieux optimiser les requêtes, exécutez
myisamchk
--analyze
sur une table après l'avoir remplie avec quelques données consistantes.
Cela met à jour une valeur pour chaque partie de l'index qui indique le
nombre moyen de lignes qui ont la même valeur. (Pour les index uniques,
c'est toujours 1, bien sûr.) MySQL utilisera cela pour décider quel index
choisir pour connecter deux tables avec une 'expression non-constante'.
Vous pouvez vérifier le retour de l'exécution d'
analyze
en faisant
SHOW INDEX FROM nom_de_table
et examiner la colonne
Cardinality
.
-
Pour trier un index et des données par rapport à un index, utilisez
myisamchk
--sort-index --sort-records=1
(si vous voulez trier selon le premier index).
Si vous avec un index unique à partir duquel vous voulez lire toutes les
lignes en prenant comme ordre cet index, c'est un bon moyen de rendre
les traitements plus rapides. Notez, toutefois, que ce tri n'est pas le
plus optimal et prendra beaucoup de temps pour une grosse table !
|