Optimisation requête SQL : 12 secondes → 0.2s mais je comprends pas pourquoi
Optimisation requête SQL : 12 secondes → 0.2s mais je comprends pas pourquoi
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
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.
Re: Optimisation requête SQL : 12 secondes → 0.2s mais je comprends pas pourquoi
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.
Re: Optimisation requête SQL : 12 secondes → 0.2s mais je comprends pas pourquoi
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
Ç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.