Indexing (B-tree, Hash, Composite)

DevOps 🟡 Mid

Dé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

Indexer toutes les colonnes : ralentit les écritures et gaspille de l'espace.
#devops#database#interview

En entretien

  1. 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.

  2. 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.

  3. 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

← → au clavier pour passer d'une fiche à l'autre