Optimisation requête SQL : 12 secondes → 0.2s mais je comprends pas pourquoi

MySQL, PostgreSQL, requetes, optimisation
toto_tech
Messages : 365
Inscription : ven. avr. 17, 2026 7:24 pm

Optimisation requête SQL : 12 secondes → 0.2s mais je comprends pas pourquoi

Message par toto_tech »

Bonjour les experts ! J'ai une requête sur une table clients (3M lignes) qui joignait 5 tables. Elle prenait 12s. J'ai juste réordonné les JOIN et maintenant c'est 0.2s... Mais EXPLAIN ne m'aide pas à comprendre. Une idée ?
Sauvegardez, bon sang
guillaume_oc
Messages : 76
Inscription : sam. mars 16, 2024 7:24 pm

Re: Optimisation requête SQL : 12 secondes → 0.2s mais je comprends pas pourquoi

Message par guillaume_oc »

Classique ! L'optimiseur de requêtes est très sensible à l'ordre des JOINs. T'as probablement mis la table la plus restrictive en premier sans t'en rendre compte.
toto31
Messages : 20
Inscription : mer. mars 11, 2026 7:25 pm

Re: Optimisation requête SQL : 12 secondes → 0.2s mais je comprends pas pourquoi

Message par toto31 »

Essaie avec EXPLAIN ANALYZE pour voir les différences d'exécution. Et vérifie tes stats de tables, peut-être qu'elles étaient obsolètes avant ta modif.
toto_tech
Messages : 365
Inscription : ven. avr. 17, 2026 7:24 pm

Re: Optimisation requête SQL : 12 secondes → 0.2s mais je comprends pas pourquoi

Message par toto_tech »

Merci ! Effectivement ANALYZE montre que le planner choisit maintenant un hash join au lieu d'un nested loop. Mais pourquoi cette décision ?
Sauvegardez, bon sang
damien_du_34
Messages : 5
Inscription : mer. mai 29, 2024 7:24 pm

Re: Optimisation requête SQL : 12 secondes → 0.2s mais je comprends pas pourquoi

Message par damien_du_34 »

Ça dépend des cardinalités estimées. Si t'as changé l'ordre, le planner pense peut-être qu'il y a moins de lignes à traiter en premier. Fais un VACUUM ANALYZE pour être sûr.
Répondre