Optimisation SQL

Résolu
master2i Messages postés 17 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 11 mars 2010 - 11 mars 2010 à 12:59
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 - 11 mars 2010 à 19:09
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

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

Il était bloqué sur un autre onglet du navigateur ;-)
3
master2i Messages postés 17 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 11 mars 2010
11 mars 2010 à 18:19
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 !!!
3
master2i Messages postés 17 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 11 mars 2010
11 mars 2010 à 14:33
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 ?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
11 mars 2010 à 15:51
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
11 mars 2010 à 19:09
Fallait y penser!
0