Objectifs du Chapitre

Index

Un index est une structure de données qui améliore la vitesse des opérations de recherche dans une table.

<aside> 💡 Analogie Pensez à un index à la fin d'un livre. L'index répertorie les sujets et les termes importants avec les numéros de page où ils apparaissent.

Fonctionnement :

Analogie : Imaginez un répertoire téléphonique où les noms des personnes sont triés par ordre alphabétique.

Fonctionnement :

Explication de l'indexation et optimisation de la recherche

Lorsque vous créez un index sur une colonne, MySQL crée une structure de données (comme un arbre B-tree) qui permet de localiser rapidement les lignes avec les valeurs de la colonne indexée. Cela réduit considérablement le temps de recherche, en particulier pour les grandes tables.

Exemple de Création et Utilisation d'un Index

Supposons que nous avons une table books et que nous voulons optimiser les recherches sur la colonne title.

CREATE INDEX idx_title ON books (title);
SELECT * FROM books WHERE title = '1984';

Maintenant, lorsque vous exécutez une requête pour rechercher des livres par titre, MySQL utilise l'index idx_title pour trouver les résultats beaucoup plus rapidement.

Fonctionnement détaillé

  1. Sans index : MySQL doit parcourir chaque ligne de la table books pour trouver les lignes où title = '1984'. Cette méthode est appelée scan de table et peut être très lente pour de grandes tables.
  2. Avec index : MySQL utilise l'index idx_title pour localiser rapidement les lignes où title = '1984' sans avoir à parcourir chaque ligne de la table. Cela est beaucoup plus rapide car l'index permet d'accéder directement aux lignes correspondantes.

Conclusion

Les index améliorent considérablement les performances des requêtes de recherche en réduisant le nombre de lignes que MySQL doit parcourir pour trouver les résultats. Ils sont particulièrement utiles pour les colonnes fréquemment recherchées ou utilisées dans les conditions de jointure.

Création d'un Index

CREATE INDEX index_name ON table_name (column_name);

Exemple