Optimisation SQL

Résolu
Signaler
Messages postés
17
Date d'inscription
dimanche 25 mai 2008
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
Bonjour à tous, j'ai un tri par couleur à réaliser qui met en jeu plusieurs tables SQL, je l'ai réalisé mais le temps de chargement de ma page est passé de 0,79sec à plus de 18 sec ...

J'ai essayé différentes méthodes avec des Jointures, des EXISTS, des IN mais je n'arrive pas à faire baisser mon temps de chargement qui est due à cette requête :

SELECT DISTINCT cl.colour

FROM summary_colours AS cl, stock AS s, product AS p, type AS t, category AS c

WHERE p.type_id=t.type_id
AND t.category_id=c.category_id
AND c.category='Category'
AND p.product_id = s.product_id
AND s.colour_id = cl.colour_id

ORDER BY cl.colour

Quelqu'un peut il m'aider ?

5 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Oups, j'ai posté un peu tard, le post que j'avais préparé.

Il était bloqué sur un autre onglet du navigateur ;-)
Messages postés
17
Date d'inscription
dimanche 25 mai 2008
Statut
Membre
Dernière intervention
11 mars 2010

oui merci beacucoup,
en effet j'avais oublié d'indexer une clé étrangère !!
mon temps de chargement est passé à 0,12sec mtn
beaucoup mieux !!!
Messages postés
17
Date d'inscription
dimanche 25 mai 2008
Statut
Membre
Dernière intervention
11 mars 2010

la même requete en un peu plus formatée :

SELECT DISTINCT cl.colour
FROM stock AS s
INNER JOIN summary_colours AS cl
ON s.colour_id = cl.colour_id
INNER JOIN product AS p
ON p.product_id = s.product_id
INNER JOIN type AS t
ON p.type_id=t.type_id
INNER JOIN category AS c
ON t.category_id=c.category_id
WHERE c.category='Category'

si quelqu'un a une idée svp ?
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Salut,

Passe par des inner join à la place des produits cartésiens
(table séparée par des virgules)

et place des index sur les clés étrangères.
et sur la colonne category
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Fallait y penser!