Index de colonnes
<<<
Index sur plusieurs colonnes Comment MySQL utilise les index
>>>

7.4 Optimiser la structure de la base de données
7 Optimisation de MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Conception
Rendre vos tables aussi compactes que possible
Index de colonnes
->Index sur plusieurs colonnes
Comment MySQL utilise les index
Le cache de clé des tables MyISAM
Comment MySQL compte les tables ouvertes
Quand MySQL ouvre et ferme les tables
Inconvénients de la création d'un grand nombre de tables dans la même base de données

7.4.4 Index sur plusieurs colonnes

MySQL peut créer des index sur plusieurs colonnes. Un index peut comprendre jusqu'à 15 colonnes. (sur les colonnes de type CHAR ou VARCHAR , vous pouvez utiliser uniquement le début de la colonne pour l'indexation.) ( Index de colonne ).

Un index sur plusieurs colonnes peut être compris comme un tableau trié contenant des valeurs créées par concaténation des valeurs des colonnes indexées.

MySQL utilise les index sur plusieurs colonnes de telle sorte que les requêtes sont accélérées quand on spécifie une quantité connue de la première colonne de l'index dans un clause WHERE , même si on ne spécifie pas la valeur des autres colonnes.

On suppose qu'une table est créée avec les paramètres suivant:


mysql> CREATE TABLE test (
    ->       id INT NOT NULL,
    ->       nom CHAR(30) NOT NULL,
    ->       prenom CHAR(30) NOT NULL,
    ->       PRIMARY KEY (id),
    ->       INDEX nom_index (nom,prenom));
Alors l'index nom_index est un index de nom et de prenom . Cela sera utile pour les requêtes qui spécifient des valeurs dans une gamme donnée de nom , ou pour à la fois nom et prenom . Ainsi l'index nom_index sera utilisé pour les requêtes suivantes:

mysql> SELECT * FROM test WHERE nom="Widenius";

mysql> SELECT * FROM test WHERE nom="Widenius"
    ->                    AND prenom="Michael";

mysql> SELECT * FROM test WHERE nom="Widenius"
    ->                    AND (prenom="Michael" OR prenom="Monty");

mysql> SELECT * FROM test WHERE nom="Widenius"
    ->                    AND prenom >="M" AND prenom < "N";
Cependant, l'index nom_index ne sera pas utilisé pour les requêtes suivantes :

mysql> SELECT * FROM test WHERE prenom="Michael";

mysql> SELECT * FROM test WHERE nom="Widenius"
    ->                    OR prenom="Michael";
Pour plus d'informations sur la méthode de MySQL pour utiliser les index dans le but d'améliorer les performance des requêtes, voyez la section suivante.

<< Index sur plusieurs colonnes >>
Index de colonnes Optimiser la structure de la base de données Comment MySQL utilise les index