Indexing (B-tree, Hash, Composite)
DevOps 🟡 MidDéfinition
Structures de données accélérant les recherches en base. B-tree pour les ranges, Hash pour l'égalité, Composite pour les requêtes multi-colonnes.
Analogie
L'index d'un livre : au lieu de lire toutes les pages, tu vas directement au bon chapitre.
Exemple de code
-- B-tree (par défaut, ranges)
CREATE INDEX idx_users_email ON users(email);
-- Composite
CREATE INDEX idx_orders_user_date
ON orders(user_id, created_at);
-- Covering
CREATE INDEX idx_cover ON orders(user_id)
INCLUDE (total, status);
Cas d'usage
Passer une requête de 2 secondes à 2 millisecondes sur une table de millions de lignes.
Anti-pattern
Termes liés
En entretien
Explique-moi les différents types d'index en base de données.
Le B-tree sert pour les recherches par range, le Hash pour l'égalité, et le Composite pour les requêtes multi-colonnes. C'est comme l'index d'un livre : au lieu de lire toutes les pages, tu vas directement au bon chapitre.
Quel gain concret apporte un bon index ?
Il peut faire passer une requête de 2 secondes à 2 millisecondes sur une table de millions de lignes. C'est pour ça qu'on crée par exemple un index composite sur (user_id, created_at) pour les requêtes qui filtrent sur ces deux colonnes.
Pourquoi ne pas indexer toutes les colonnes d'une table ?
Parce que ça ralentit les écritures et gaspille de l'espace disque : chaque index doit être maintenu à chaque insert ou update. Il faut choisir les index en fonction des requêtes réellement fréquentes.
Fiche mise à jour le 2026-09-27