Optimisation d'une requête SQL avec 12 jointures qui prend 8 secondes

MySQL, PostgreSQL, requetes, optimisation
yanis1964
Messages : 300
Inscription : dim. sept. 03, 2023 7:24 pm

Optimisation d'une requête SQL avec 12 jointures qui prend 8 secondes

Message par yanis1964 »

J'ai une requête de reporting qui joint 12 tables et prend 8 secondes à s'exécuter. EXPLAIN montre qu'elle fait des scans complets. Des idées pour l'optimiser ?
le_zed38
Messages : 74
Inscription : lun. août 18, 2025 7:24 pm

Re: Optimisation d'une requête SQL avec 12 jointures qui prend 8 secondes

Message par le_zed38 »

12 jointures c'est beaucoup. As-tu essayé de décomposer en sous-requêtes temporaires ? Parfois materialiser des résultats intermédiaires aide.
sarah_du_62
Messages : 5
Inscription : mar. mars 04, 2025 7:25 pm

Re: Optimisation d'une requête SQL avec 12 jointures qui prend 8 secondes

Message par sarah_du_62 »

Vérifie aussi tes index composites. Souvent sur ce genre de requêtes, un index couvrant sur 2-3 colonnes fréquemment jointes fait des miracles.
yanis1964
Messages : 300
Inscription : dim. sept. 03, 2023 7:24 pm

Re: Optimisation d'une requête SQL avec 12 jointures qui prend 8 secondes

Message par yanis1964 »

J'ai déjà des index sur toutes les clés de jointure. Par contre je n'ai pas essayé les sous-requêtes temporaires. Vous pensez à des CTE (WITH) ?
le_zed38
Messages : 74
Inscription : lun. août 18, 2025 7:24 pm

Re: Optimisation d'une requête SQL avec 12 jointures qui prend 8 secondes

Message par le_zed38 »

Oui exactement. Avec PostgreSQL tu peux même utiliser MATERIALIZED dans les CTE. Sinon, as-tu regardé si tu peux pré-agréger certaines données ?
Répondre