Les index peuvent être créés en même temps que la table dans une requête CREATE TABLE.
CREATE TABLE nomtable (
champ1 type1(longueur1),
champ2 type2(longueur2),
...,
PRIMARY KEY (cleprimaire),
UNIQUE KEY [nomindex1] (champunique),
KEY [nomindex2] (champaindexer)
);
Ex :
CREATE TABLE clients (
id int NOT NULL AUTO_INCREMENT,
code varchar(15) NOT NULL,
prenom varchar(45),
nomfamille varchar(45),
adresse varchar(45),
ville varchar(45),
telephone varchar(14),
PRIMARY KEY (id),
UNIQUE KEY ux_code (code),
KEY ix_nomfamille (nomfamille)
);
Notez qu'il n'est pas nécessaire de nommer les index. Par défaut, MySQL leur donnera le même nom que le champ indexé.
Si vous les nommez, il est d'usage de nommer :
Tous les index à l'exception des index primaires peuvent également être ajoutés dans un deuxième temps à l'aide d'une requête CREATE INDEX.
Tous peuvent cependant être créés à l'aide d'un ALTER TABLE.
ALTER TABLE nomtable
ADD PRIMARY KEY|UNIQUE|INDEX [nomindex] (nomcolonne);
Ex :
ALTER TABLE voitures
ADD INDEX (client_id);
ALTER TABLE usagers
ADD UNIQUE (code);
Il est possible de définir un index sur plusieurs colonnes. Cette pratique est à éviter pour les clés primaires mais peut être très utiles dans d'autres cas.
ALTER TABLE modeles
ADD UNIQUE (nom, fabricant);
« 13.1.14 CREATE TABLE Syntax ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/create-table.html
« 13.1.6 ALTER TABLE Syntax ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/alter-table.html
« 13.1.11 CREATE INDEX Syntax ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/create-index.html
▼Publicité