CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...) index_col_name: col_name [(length)] [ASC | DESC]
La requête CREATE INDEX
n'effectue aucune
action sur les versions de MySQL antérieures à la version
3.22. Dans les versions 3.22 et supérieures, CREATE
INDEX
est équivalent à une requête ALTER
TABLE
pour créer des index. See
Section 13.2.2, « Syntaxe de ALTER TABLE
».
Normalement, tous les index sont créés en même temps que la
table elle même avec CREATE TABLE
. See
Section 13.2.5, « Syntaxe de CREATE TABLE
». CREATE INDEX
permet d'ajouter des index à une table existante.
Une liste de colonnes de la forme
(col1,col2,...)
crée un index
multi-colonnes. Les valeurs de l'index sont créées en
concaténant la valeur deux colonnes données.
Pour les colonnes CHAR
et
VARCHAR
, les index peut être créés sur
uniquement une partie de la colonne, avec la syntaxe
col_name(length)
. Pour les colonnes
BLOB
et TEXT
la longueur
d'index est obligatoire. La requête
suivante crée un index en utilisant les 10 premiers caractères
de la colonne name
:
mysql> CREATE INDEX part_of_name ON customer (name(10));
Comme la plupart des noms ont en général des différences dans
les 10 premiers caractères, l'index ne devrait pas être plus
lent qu'un index créé à partir de la colonne
name
en entier. Ainsi, en n'utilisant qu'une
partie de la colonne pour les index, on peut réduire la taille
du fichier d'index, ce qui peut permettre d'économiser beaucoup
d'espace disque, et peut aussi accélérer les opérations
INSERT
!
Il est important de savoir qu'on peut indexer une colonne qui
peut avoir la valeur NULL
ou une colonne
BLOB
/TEXT
que si on
utilise une version 3.23.2 ou supérieure de MySQL et en
utilisant le type MyISAM
.
Pour plus d'informations à propos de l'utilisation des index dans MySQL, voir Section 7.4.5, « Comment MySQL utilise les index ».
Les index FULLTEXT
ne peuvent indexer que des
colonnes VARCHAR
ou TEXT
,
et seulement dans les tables MyISAM
. Les
index FULLTEXT
sont disponibles dans les
versions 3.23.23 et supérieures de MySQL.
Section 12.6, « Recherche en texte intégral (Full-text
) dans MySQL ».
Les index SPATIAL
peuvent indexer les
colonnes spatiales, et uniquement avec les tables
MyISAM
. Les index SPATIAL
sont disponibles en MySQL 4.1 et plus récent. Les colonnes
spatiales sont présentées dans section
Chapitre 18, Données spatiales avec MySQL.
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.