Remarquez-vous quelque chose d'intéressant ?
Oui ! Bien vu ! L'index (nom, prenom) correspond exactement aux deux premières colonnes de l'index (nom, prenom,
init_2e_prenom) ; pas seulement au niveau des valeurs mais surtout au niveau de l'ordre. Et l'index (nom) correspond à la
première colonne de l'index (nom, prenom, init_2e_prenom).
Or, je vous ai dit que lorsque vous faites une recherche sur le nom, le prénom et l'initiale avec l'index (nom, prenom,
init_2e_prenom), MySQL regarde d'abord le nom, puis le prénom, et pour finir l'initiale. Donc, si vous ne faites une recherche
que sur le nom et le prénom, MySQL va intelligemment utiliser l'index (nom, prenom, init_2e_prenom) : il va simplement laisser
tomber l'étape de l'initiale du second prénom. Idem si vous faites une recherche sur le nom : MySQL se basera uniquement sur la
première colonne de l'index existant.
Par conséquent, pas besoin de définir un index (nom, prenom) ou un index (nom). Ils sont en quelque sorte déjà présents.
Mais qu'en est-il des index (prenom), ou (prenom, init_2e_prenom) ? Vous pouvez voir que la table contenant l'index (prenom)
ne correspond à aucune colonne d'un index existant (au niveau de l'ordre des lignes). Par conséquent, si vous voulez un index
sur (prenom), il vous faut le créer. Même chose pour (prenom, init_2e_prenom) ou (nom, init_2e_prenom).
On parle d'index "par la gauche". Donc si l'on prend
des sous-parties d'index existant en prenant des
colonnes "par la gauche", ces index existent. Mais si
l'on commence par la droite ou que l'on "saute" une
colonne, ils n'existent pas et doivent éventuellement
être créés.
Index sur des colonnes de type alphanumérique
Types CHAR et VARCHAR
Lorsque l'on indexe une colonne de type VARCHAR ou CHAR (comme la colonne nom de la table Client par exemple), on peut
décomposer l'index de la manière suivante :
1e lettre 2e lettre 3e lettre 4e lettre 5e lettre 6e lettre 7e lettre 8e lettre 9e lettre 10e lettre
B
o
u
l
i
a
n
C
a
r
a
m
o
u
D
u
p
o
n
t
D
u
p
o
n
t
D
u
p
o
n
t
F
r
a
n
ç
o
i
s
F
r
a
n
ç
o
i
s
L
o
u
p
i
o
t
S
u
n
n
a
V
a
n
d
e
n
b
u
s
h
nom
Boulian
Partie 2 : Index, jointures et sous-requêtes
74/414
www.openclassrooms.com
Oui ! Bien vu ! L'index (nom, prenom) correspond exactement aux deux premières colonnes de l'index (nom, prenom,
init_2e_prenom) ; pas seulement au niveau des valeurs mais surtout au niveau de l'ordre. Et l'index (nom) correspond à la
première colonne de l'index (nom, prenom, init_2e_prenom).
Or, je vous ai dit que lorsque vous faites une recherche sur le nom, le prénom et l'initiale avec l'index (nom, prenom,
init_2e_prenom), MySQL regarde d'abord le nom, puis le prénom, et pour finir l'initiale. Donc, si vous ne faites une recherche
que sur le nom et le prénom, MySQL va intelligemment utiliser l'index (nom, prenom, init_2e_prenom) : il va simplement laisser
tomber l'étape de l'initiale du second prénom. Idem si vous faites une recherche sur le nom : MySQL se basera uniquement sur la
première colonne de l'index existant.
Par conséquent, pas besoin de définir un index (nom, prenom) ou un index (nom). Ils sont en quelque sorte déjà présents.
Mais qu'en est-il des index (prenom), ou (prenom, init_2e_prenom) ? Vous pouvez voir que la table contenant l'index (prenom)
ne correspond à aucune colonne d'un index existant (au niveau de l'ordre des lignes). Par conséquent, si vous voulez un index
sur (prenom), il vous faut le créer. Même chose pour (prenom, init_2e_prenom) ou (nom, init_2e_prenom).
On parle d'index "par la gauche". Donc si l'on prend
des sous-parties d'index existant en prenant des
colonnes "par la gauche", ces index existent. Mais si
l'on commence par la droite ou que l'on "saute" une
colonne, ils n'existent pas et doivent éventuellement
être créés.
Index sur des colonnes de type alphanumérique
Types CHAR et VARCHAR
Lorsque l'on indexe une colonne de type VARCHAR ou CHAR (comme la colonne nom de la table Client par exemple), on peut
décomposer l'index de la manière suivante :
1e lettre 2e lettre 3e lettre 4e lettre 5e lettre 6e lettre 7e lettre 8e lettre 9e lettre 10e lettre
B
o
u
l
i
a
n
C
a
r
a
m
o
u
D
u
p
o
n
t
D
u
p
o
n
t
D
u
p
o
n
t
F
r
a
n
ç
o
i
s
F
r
a
n
ç
o
i
s
L
o
u
p
i
o
t
S
u
n
n
a
V
a
n
d
e
n
b
u
s
h
nom
Boulian
Partie 2 : Index, jointures et sous-requêtes
74/414
www.openclassrooms.com
