Requête avec LEFT JOIN multiples un peu trop longue en exécution
Bonjour,
J'ai un souci de délai d'exécution pour une requête à multiples LEFT JOIN
Contexte :
- J'ai une table glossaire dont je veux faire la liste
- Chaque élément de la table glossaire pour avoir une URL particulière ou pas (j'ai créé la table element_URL car le champ est rare)
- Chaque élément de la table glossaire pour avoir un autre non ou pas (j'ai créé la table element_nom2 car le champ est rare)
- Chaque élément de la table glossaire a un article (Dont le lien est décrit dans la table articles_elements) ou pas d'article
Tout ceci fonctionne mais c'est un peu long : 8 secondes comparé à 0.8 secondes la seconde requête pour 630 éléments en test local.
1ère requête : 8 s
Code:
1 2 3 4 5 6 7
| SELECT glossaire.Id, glossaire.Nom, CONCAT(element_url.URL,'?',element_url.URL_Parametres) as URL, element_nom2.Nom2 AS Nom2, articles_elements.Id
FROM glossaire
LEFT JOIN element_url ON (element_url.Element_Table_Id = 3 AND element_url.Element_Id = glossaire.Id)
LEFT JOIN element_nom2 ON (element_nom2.Element_Table_Id = 3 AND element_nom2.Element_Id = glossaire.Id)
LEFT JOIN articles_elements ON (articles_elements.Elements_Id = glossaire.Id AND articles_elements.Tables_Id = 3)
GROUP BY glossaire.Nom
ORDER BY glossaire.Nom |
2ème requête : 0.8 s
Code:
1 2 3 4 5
| SELECT glossaire.Id, glossaire.Nom, CONCAT(element_url.URL,'?',element_url.URL_Parametres) as URL, element_nom2.Nom2 AS Nom2
FROM glossaire
LEFT JOIN element_url ON (element_url.Element_Table_Id = 3 AND element_url.Element_Id = glossaire.Id)
LEFT JOIN element_nom2 ON (element_nom2.Element_Table_Id = 3 AND element_nom2.Element_Id = glossaire.Id)
ORDER BY glossaire.Nom |
Avez-vous une idée d'optimisation ?
D'avance merci