PaliSkill
SQL Intermédiaire

Leçon 1 / 8 — Chapitre 7: Index approfondi

Index : principe et intérêt

Un index est une structure auxiliaire que la base de données construit sur une colonne, pour accélérer les recherches sur cette colonne — un peu comme l'index d'un livre permet de trouver une page sans le lire entièrement.

CREATE INDEX idx_categorie ON produits(categorie);

Cet index permet à la base de données de retrouver rapidement toutes les lignes d'une catégorie donnée, sans avoir à parcourir chaque ligne de la table une par une — un gain important dès qu'une table contient beaucoup de lignes.

Ce gain a un coût. Un index occupe de l'espace de stockage supplémentaire, et doit lui-même être mis à jour à chaque INSERT, UPDATE ou DELETE sur la colonne indexée — ce qui ralentit légèrement ces opérations d'écriture. Un index est donc surtout utile sur une colonne fréquemment utilisée dans une clause WHERE, ORDER BY ou une jointure, pas sur toutes les colonnes systématiquement.

Un index ne change jamais le résultat d'une requête — une requête renvoie exactement les mêmes lignes avec ou sans index. Seule sa vitesse d'exécution change.

À retenir :

  • Un index accélère la recherche sur une colonne, en évitant de parcourir toute la table ligne par ligne.
  • Créer un index a un coût : de l'espace de stockage, et un ralentissement des écritures (INSERT, UPDATE, DELETE) sur la colonne indexée.
  • Un index ne modifie jamais le résultat d'une requête, seulement sa vitesse.

À vous de jouer : repérez, dans les requêtes des chapitres précédents, une colonne souvent utilisée dans une clause WHERE ou une jointure — c'est une bonne candidate pour un index.

À vous de jouer

À faire

Un index sur une colonne accélère-t-il la recherche (par exemple avec WHERE) sur cette colonne ? Répondez par oui ou non.

Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.

💡 Oui ou non.

À vous de jouer

À faire

Créer un index sur une colonne a-t-il un coût lors des écritures (INSERT, UPDATE, DELETE) sur la table concernée ? Répondez par oui ou non.

Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.

💡 Oui ou non.

Quitter le module