10 Sunna
Christine I
chrichrisun@email.com
Vous avez bien sûr un index sur la colonne id , mais vous constatez que vous faites énormément de recherches par nom, prénom
et initiale du second prénom. Vous pourriez donc faire trois index, un pour chacune de ces colonnes. Mais, si vous faites souvent
des recherches sur les trois colonnes à la fois, il vaut encore mieux faire un seul index, sur les trois colonnes (nom, prenom,
init_2e_prenom). L'index contiendra donc les valeurs des trois colonnes et sera trié par nom, ensuite par prénom, et enfin par
initiale (l'ordre des colonnes a donc de l'importance !).
Du coup, lorsque vous cherchez "Dupont Valérie C.", grâce à l'index MySQL trouvera rapidement tous les "Dupont", parmi
lesquels il trouvera toutes les "Valérie" (toujours en se servant du même index), parmi lesquelles il trouvera celle (ou celles) dont
le second prénom commence par "C".
Tirer parti des "index par la gauche"
Tout ça c'est bien beau si on fait souvent des recherches à la fois sur le nom, le prénom et l'initiale. Mais comment fait-on si l'on
fait aussi souvent des recherches uniquement sur le nom, ou uniquement sur le prénom, ou sur le nom et le prénom en même
temps mais sans l'initiale ? Faut-il créer un nouvel index pour chaque type de recherche ?
Hé bien non ! MySQl est beaucoup trop fort : il est capable de tirer parti de votre index sur (nom, prenom, init_2e_prenom) pour
certaines autres recherches. En effet, si l'on représente les index sous forme de tables, voici ce que cela donnerait pour les quatre
index (prenom), (nom), (nom, prenom) et (nom, prenom, init_2e_prenom).
Partie 2 : Index, jointures et sous-requêtes
73/414
www.openclassrooms.com
Précédent

- 73/413

Suivant