Tous les types de colonnes ed MySQL peuvent être indexés.
L'utilisation des index sur les colonnes pertinentes est la
meilleur fa¸on d'améliorer les performances de opérations de
SELECT
.
Le nombre maximum de clefs et la longueur maximale des index sont définis pour chaque type de table. See Chapitre 14, Moteurs de tables MySQL et types de table. Vous pouvez avec tous les gestionnaires de tables avoir au moins 16 clefs et une taille totale d'index d'au moins 256 octets.
Pour les colonnes CHAR
et
VARCHAR
, il est possible d'indexer un
préfixe de la colonne. C'est plus rapide et plus économe en
espace disque que l'indexation de la colonne entière. La
syntaxe pour indexer le début d'une colonne au moment de la
création de la table ressemble à cela: See
Section 7.4.3, « Index de colonnes ».
Les moteurs de tables MyISAM
et (depuis MySQL
4.0.14) InnoDB
supportent aussi l'indexation
des colonnes BLOB
et TEXT
.
Lors de l'indexation d'une colonne BLOB
ou
TEXT
, vous devez
spécifier une taille pour l'index. Par exemple :
CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10)));
Les préfixes peuvent atteindre 255 octets de longeur (ou 1000
octets pour les tables MyISAM
et
InnoDB
depuis MySQL 4.1.2). Notez que les
limites de préfixes sont mesurées en octets, alors que la
limite de préfixe dans la commande CREATE
TABLE
est interprétée comme un nombre de
caractères. Prenez le en compte lorsque vous spécifiez une
taille de préfixe pour une colonne qui utilise un jeu de
caractères multi-octets.
Depuis MySQL 3.23.23, vous pouvez aussi créer des index
FULLTEXT
. Ils sont utilisés pour les
recherches en texte plein. Seules les tables
MyISAM
supportent les index
FULLTEXT
et uniquement pour les colonnes
CHAR
, VARCHAR
, et
TEXT
. L'indexation se fait sur toute la
largeur de la colonne. L'indexation par préfixe n'est pas
possible. Voyez la section Section 12.6, « Recherche en texte intégral (Full-text
) dans MySQL »
pour plus de détails.
Depuis MySQL 4.1.0, vous pouvez créer des index spatiaux.
Actuellement, le type de données spatial n'est supporté que
par les tables MyISAM
. Les données spatiales
utilisent un R-tree
.
Le moteur de tables MEMORY
(HEAP
) supporte les index hash. Depuis MySQL
4.1.0, ce moteur supporte aussi les index
B-tree
.
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.