Page 1 sur 1
Optimisation d'une requête SQL avec 12 JOIN qui timeout
Publié : dim. mars 15, 2026 5:43 am
par zed.g
Aidez-moi à sauver cette requête qui plante après 30s ! Elle joint 12 tables (dont 3 avec +10M lignes). EXPLAIN montre un problème de nested loops. J'ai déjà créé 5 indexes mais rien n'y fait. Version : MariaDB 10.6.
Re: Optimisation d'une requête SQL avec 12 JOIN qui timeout
Publié : dim. mars 15, 2026 6:43 am
par webmaster59
Poste ton EXPLAIN format=JSON. As-tu essayé avec des STRAIGHT_JOIN pour forcer l'ordre ? Et vérifie tes cardinalités, MariaDB a parfois des stats pourries.
Re: Optimisation d'une requête SQL avec 12 JOIN qui timeout
Publié : dim. mars 15, 2026 8:43 am
par zed.g
Voici l'EXPLAIN : [exemple fictif]. Le problème vient clairement de la table 'transactions' où il scanne 8M lignes. J'ai pourtant un index sur (user_id, date)...
Re: Optimisation d'une requête SQL avec 12 JOIN qui timeout
Publié : dim. mars 15, 2026 11:43 am
par mehdi1979
Ton index est peut-être mal choisi. Dans ce cas, un index couvrant avec tous les champs utilisés dans le WHERE et le SELECT serait mieux. Essaye (date, user_id, amount) INCLUDE (status).
Re: Optimisation d'une requête SQL avec 12 JOIN qui timeout
Publié : dim. mars 15, 2026 12:43 pm
par zed.g
Génial, ça marche ! La requête passe à 1.2s. J'ai aussi ajouté un INDEX HINT pour forcer cet index. Merci !
Re: Optimisation d'une requête SQL avec 12 JOIN qui timeout
Publié : dim. mars 15, 2026 5:43 pm
par webmaster59
Attention aux hints, c'est fragile en prod. Configure plutôt ton optimizer_switch pour désactiver les mauvais plans. Et pense aux vues matérialisées si cette requête est fréquente.