Aller au contenu

Indexation — Bonnes pratiques#

courant

  • Indexer les colonnes utilisées dans WHERE, JOIN ON, ORDER BY, GROUP BY.
  • Éviter de sur-indexer : chaque index ralentit INSERT/UPDATE/DELETE.
  • Préférer un index composite à plusieurs index simples si les colonnes sont souvent filtrées ensemble.
  • L'ordre des colonnes dans un index composite compte (colonne la plus sélective/filtrée en = en premier).
  • Utiliser des index partiels pour ne cibler qu'un sous-ensemble de lignes fréquemment interrogé.
  • Vérifier l'utilisation réelle avec EXPLAIN QUERY PLAN.
CREATE INDEX idx_ville_nom ON etudiants(ville_id, nom);
CREATE INDEX idx_actifs ON etudiants(nom) WHERE actif = 1;

EXPLAIN QUERY PLAN
SELECT * FROM etudiants WHERE ville_id = 1 ORDER BY nom;

Index inutiles#

-- Redondant si idx_ville_nom(ville_id, nom) existe déjà :
CREATE INDEX idx_ville ON etudiants(ville_id);

SQLite

L'optimiseur SQLite peut utiliser un index composite pour une requête filtrant seulement sur son premier segment de colonnes. Utiliser ANALYZE; pour mettre à jour les statistiques utilisées par le planificateur.