Un index accélère la récupération des données. Sans index, la base de données parcourt chaque ligne pour trouver les enregistrements correspondants. Avec un index, elle accède directement aux lignes pertinentes. L'index est une structure de données distincte qui associe des valeurs à des emplacements. Le principe est le même pour un index de livre : on recherche un terme et on trouve le numéro de page. On ne lit pas chaque page pour le trouver. La base de données fonctionne de la même manière.
Les index ont un coût. Ils occupent de l'espace. Ils ralentissent les insertions, les mises à jour et les suppressions, car l'index doit également être mis à jour. Chaque écriture devient plus coûteuse. L'avantage réside dans des lectures plus rapides. Pour les charges de travail axées sur la lecture, les index sont essentiels. Pour les charges de travail axées sur l'écriture, un trop grand nombre d'index nuit aux performances. Choisir les colonnes à indexer nécessite de comprendre les modèles de requêtes. Les colonnes utilisées dans les clauses WHERE, les conditions JOIN et les clauses ORDER BY sont de bons candidats. Les colonnes à faible cardinalité, comme un indicateur booléen, sont de mauvais candidats, car l'index ne restreint pas suffisamment la recherche. Les index composites couvrent plusieurs colonnes et peuvent répondre aux requêtes qui filtrent sur plusieurs champs. L'ordre des colonnes dans un index composite est important. La base de données peut utiliser un index composite pour les requêtes portant sur la première colonne, mais pas uniquement sur les dernières colonnes. La conception des index est un compromis. L'objectif est d'accélérer les requêtes importantes sans ralentir les écritures plus que nécessaire.
Types d'index
- Arbre B — format par défaut pour la plupart des bases de données, idéal pour les requêtes par plage
- Hachage — recherches d'égalité rapides, sans prise en charge des plages
- Bitmap — colonnes à faible cardinalité, requêtes analytiques
- Recherche en texte intégral
- Index composite — plusieurs colonnes dans un seul index
An index is a shortcut. It trades write speed and storage for read speed. Use it where reads matter most.
Comments (3)
Leave a comment