Optimisation d'une requête SQL avec 5 LEFT JOIN qui timeout
-
sebastien57
- Messages : 6
- Inscription : mer. avr. 15, 2026 7:24 pm
Optimisation d'une requête SQL avec 5 LEFT JOIN qui timeout
Aidez-moi à sauver cette requête : 5 LEFT JOIN sur des tables de 1 à 5M lignes. Timeout après 30s. J'ai des indexes sur les FK, mais EXPLAIN montre des 'nested loops' coûteux. PostgreSQL 14.
-
admin_sys_gaming
- Messages : 571
- Inscription : sam. janv. 20, 2024 7:24 pm
Re: Optimisation d'une requête SQL avec 5 LEFT JOIN qui timeout
Classique ! As-tu essayé de forcer un HASH JOIN avec 'SET enable_nestloop = off' ? Sur des gros datasets, ça peut diviser le temps par 10. Mais vérifie ta config work_mem avant.
Re: Optimisation d'une requête SQL avec 5 LEFT JOIN qui timeout
Les LEFT JOIN sont-ils vraiment nécessaires ? Chaque LEFT JOIN non utilisé rajoute un scan inutile. Parfois, pré-aggreger en CTE ou sous-requête est plus efficace.
-
sebastien57
- Messages : 6
- Inscription : mer. avr. 15, 2026 7:24 pm
Re: Optimisation d'une requête SQL avec 5 LEFT JOIN qui timeout
Bonne question : seulement 3 JOIN sont essentiels. Je vais restructurer avec des CTEs. Pour enable_nestloop, ça marche mais bouffe 4GB de RAM... Dois-je augmenter work_mem ou c'est risqué ?
-
admin_sys_gaming
- Messages : 571
- Inscription : sam. janv. 20, 2024 7:24 pm
Re: Optimisation d'une requête SQL avec 5 LEFT JOIN qui timeout
Augmente work_mem MAIS seulement pour cette requête (via SET LOCAL). En prod, on a des requêtes à 8GB temporairement. Teste aussi avec 'EXPLAIN ANALYZE' pour voir le vrai coût.
-
la_mehdi57
- Messages : 29
- Inscription : mer. déc. 17, 2025 7:24 pm
Re: Optimisation d'une requête SQL avec 5 LEFT JOIN qui timeout
Autre piste : materialized views pour les tables les plus jointes. On a réduit un cas similaire de 25s à 800ms comme ça. Rafraîchissement toutes les heures suffisait pour notre besoin.