Formation PUB200 : MySQL, 2018 Index pour accélérer les requêtes

7.2 Créer un index


Les index peuvent être créés en même temps que la table dans une requête CREATE TABLE.

Syntaxe MySQL

CREATE TABLE nomtable (

   champ1 type1(longueur1), 

   champ2 type2(longueur2),

   ...,

   PRIMARY KEY (cleprimaire),

   UNIQUE KEY [nomindex1] (champunique),

   KEY [nomindex2] (champaindexer)

);

Ex :

MySQL

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)

);

Nom des index

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 :

  • les index uniques en commençant par ux_
  • les index simples en commençant par ix_

Ajout d'un index à une table existante

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. 

Syntaxe MySQL

ALTER TABLE nomtable

ADD PRIMARY KEY|UNIQUE|INDEX [nomindex] (nomcolonne);

Ex :

MySQL

ALTER TABLE voitures

ADD INDEX (client_id);

MySQL

ALTER TABLE usagers

ADD UNIQUE (code);

Index sur plus d'un champ

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.

MySQL

ALTER TABLE modeles

ADD UNIQUE (nom, fabricant);

Pour plus d'inforamtion

« 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é

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre