L'autre possibilité est d'ajouter les index à la suite des colonnes, en séparant chaque élément par une virgule :
Code : SQL
CREATE TABLE nom_table (
colonne1 description_colonne1,
[colonne2 description_colonne2,
colonne3 description_colonne3,
...,]
[PRIMARY KEY (colonne_clé_primaire)],
[INDEX [nom_index] (colonne1_index [, colonne2_index, ...]]
)
[ENGINE=moteur];
Exemple : si l'on avait voulu créer la table Animal avec un index sur la date de naissance, et un autre sur les 10 premières lettres
du nom, on aurait pu utiliser la commande suivante :
Code : SQL
CREATE TABLE Animal (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
espece VARCHAR(40) NOT NULL,
sexe CHAR(1),
date_naissance DATETIME NOT NULL,
nom VARCHAR(30),
commentaires TEXT,
PRIMARY KEY (id),
INDEX ind_date_naissance (date_naissance), -- index sur la date
de naissance
INDEX ind_nom (nom(10))
-- index sur le nom
(le chiffre entre parenthèses étant le nombre de caractères pris en
compte)
)
ENGINE=INNODB;
Vous n'êtes pas obligés de préciser un nom pour votre index. Si vous ne le faites pas, MySQL en créera un automatiquement
pour vous.
Je préfère nommer mes index moi-même plutôt que de laisser MySQL créer un nom par défaut, et respecter certaines conventions
personnelles. Ainsi, mes index auront toujours le préfixe "ind" suivi du ou des nom(s) des colonnes concernées, le tout séparé
par des "_". Il vous appartient de suivre vos propres conventions bien sûr. L'important étant de vous y retrouver.
Et pour ajouter des index UNIQUE ou FULLTEXT, c'est le même principe :
Code : SQL
CREATE TABLE nom_table (
colonne1 INT NOT NULL,
colonne2 VARCHAR(40),
colonne3 TEXT,
UNIQUE [INDEX] ind_uni_col2 (colonne2),
-- Crée un index
UNIQUE sur la colonne2, INDEX est facultatif
FULLTEXT [INDEX] ind_full_col3 (colonne3)
-- Crée un index
FULLTEXT sur la colonne3, INDEX est facultatif
)
ENGINE=MyISAM;
Exemple : création de la table Animal comme précédemment, en ajoutant un index UNIQUE sur (nom, espece).
Code : SQL
Partie 2 : Index, jointures et sous-requêtes
77/414
www.openclassrooms.com
Précédent

- 77/413

Suivant