Page 1 sur 1
Optimisation requête PostgreSQL : 30 secondes → <100ms ?
Publié : sam. déc. 28, 2024 9:55 am
par sandra1960
Bonjour, j'ai une requête sur une table de 2M lignes qui joint 5 tables. Elle prend 30s en prod ! EXPLAIN montre un seq scan sur la table 'transactions'. Un index serait la solution ?
Re: Optimisation requête PostgreSQL : 30 secondes → <100ms ?
Publié : sam. déc. 28, 2024 2:55 pm
par mehdi2001
Commence par vérifier si tu as bien un index sur les colonnes de jointure. Mais attention aux index inutiles qui ralentissent les INSERT. Peux-tu partager ton EXPLAIN ANALYZE ?
Re: Optimisation requête PostgreSQL : 30 secondes → <100ms ?
Publié : sam. déc. 28, 2024 4:55 pm
par seb33
J'ai eu un cas similaire. En plus des indexes, regarde tes paramètres work_mem et shared_buffers. Sur un serveur 16GB, j'ai gagné 70% en ajustant ces valeurs.
Re: Optimisation requête PostgreSQL : 30 secondes → <100ms ?
Publié : sam. déc. 28, 2024 8:55 pm
par sandra1960
Merci ! Voici l'EXPLAIN : Seq Scan sur transactions (cost=0.00..45821.33 rows=...). Pas d'index effectivement. Je vais en créer un sur customer_id et date_created.
Re: Optimisation requête PostgreSQL : 30 secondes → <100ms ?
Publié : dim. déc. 29, 2024 3:55 am
par mehdi2001
Attention à l'ordre des colonnes dans ton index ! Mets d'abord customer_id si c'est ta condition WHERE principale. Et pense aux index partiels si tu filtres souvent par date.
Re: Optimisation requête PostgreSQL : 30 secondes → <100ms ?
Publié : lun. déc. 30, 2024 3:55 am
par sandra1960
UPDATE : Après création d'un index composite (customer_id, date_created) WHERE status='completed', la requête est descendue à 87ms ! Merci à tous !