Optimisation requête PostgreSQL : 30 secondes → <100ms ?

MySQL, PostgreSQL, requetes, optimisation
sandra1960
Messages : 34
Inscription : mar. mars 10, 2026 7:25 pm

Optimisation requête PostgreSQL : 30 secondes → <100ms ?

Message 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 ?
Le cloud c'est l'ordi de quelqu'un d'autre
mehdi2001
Messages : 599
Inscription : mar. mai 19, 2026 7:24 pm

Re: Optimisation requête PostgreSQL : 30 secondes → <100ms ?

Message 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 ?
seb33
Messages : 101
Inscription : mar. août 26, 2025 7:25 pm

Re: Optimisation requête PostgreSQL : 30 secondes → <100ms ?

Message 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.
Le cloud c'est l'ordi de quelqu'un d'autre
sandra1960
Messages : 34
Inscription : mar. mars 10, 2026 7:25 pm

Re: Optimisation requête PostgreSQL : 30 secondes → <100ms ?

Message 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.
Le cloud c'est l'ordi de quelqu'un d'autre
mehdi2001
Messages : 599
Inscription : mar. mai 19, 2026 7:24 pm

Re: Optimisation requête PostgreSQL : 30 secondes → <100ms ?

Message 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.
sandra1960
Messages : 34
Inscription : mar. mars 10, 2026 7:25 pm

Re: Optimisation requête PostgreSQL : 30 secondes → <100ms ?

Message 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 !
Le cloud c'est l'ordi de quelqu'un d'autre
Répondre