La performance commence par les index
Une requête PostgreSQL lente est presque toujours un problème d'indexation. Comprendre comment PostgreSQL utilise les index est essentiel pour tout développeur backend.
Types d'index
- B-tree — Le défaut, idéal pour les comparaisons d'égalité et de plage
- GIN — Pour les recherches full-text et les tableaux
- GiST — Pour les données géospatiales et les plages
- BRIN — Pour les tables très larges avec des données naturellement ordonnées
EXPLAIN ANALYZE
Toujours commencer par analyser le plan d'exécution :
EXPLAIN ANALYZE
SELECT * FROM orders
WHERE customer_id = 'abc123'
AND created_at > NOW() - INTERVAL '30 days'
ORDER BY created_at DESC
LIMIT 20;
Index composites
L'ordre des colonnes dans un index composite est crucial. La règle : filtres d'égalité d'abord, plages ensuite, tri en dernier.
CREATE INDEX idx_orders_customer_date
ON orders (customer_id, created_at DESC);
Conclusion
Une stratégie d'indexation réfléchie peut transformer les performances de votre application, passant de secondes à millisecondes.