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. 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
. Voyez aussi
Section 7.4.5, « Comment MySQL utilise les index » et Section 7.2.1, « Syntaxe de EXPLAIN
(Obtenir des informations sur les
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 !
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.