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.