Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

7. Indexes & Optimisation

Tuning et bonnes pratiques pour la création, l’usage et la maintenance des index dans PostgreSQL.

Retour à Postgresql
Objectif: 🎯 Objectif du composant
Améliorer drastiquement les performances de requêtes en optimisant l’usage des index, éviter les parcours séquentiels coûteux, et assurer une bonne maintenance.
Paramètres: ⚙️ Paramètres concernés
enable_indexscan, enable_bitmapscan, enable_seqscan, default_statistics_target, maintenance_work_mem, effective_io_concurrency
Bonnes pratiques: ✅ Bonnes pratiques
- Créer des index sur colonnes utilisées en WHERE ou JOIN - Vérifier via EXPLAIN ANALYZE - Utiliser les index partiels, fonctionnels, GIN si utile - Maintenir les stats avec VACUUM/ANALYZE
Pièges à éviter: ⚠️ Pièges à éviter
- Index non utilisés = surcharge CPU/disk - Trop d’index ralentissent les INSERT/UPDATE - Choix de mauvais type d’index - Paramètres de planification non maîtrisés
Recommandations: 👤 Recommandations par profil
OLTP : index simples, stats hautes, peu d’écritures BI : index composites, bitmapscan on Dev : tester avec EXPLAIN + PG_STAT_STATEMENTS
Exemples: 🧪 Exemples de réglage
CREATE INDEX idx_active_users ON users(id) WHERE active = true; CREATE INDEX idx_docs_content ON docs USING GIN(to_tsvector('french', content));
Commandes utiles: 🛠️ Commandes utiles
EXPLAIN ANALYZE SELECT * FROM ... SELECT * FROM pg_stat_user_indexes; SELECT relname, indexrelname, idx_scan FROM pg_stat_user_indexes ORDER BY idx_scan DESC;
Références: 🔗 Références officielles
- https://www.postgresql.org/docs/current/indexes.html - https://use-the-index-luke.com/ - https://wiki.postgresql.org/wiki/Index_Maintenance