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
2ème requête : 0.8 s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager