|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : décembre 2007 Messages : 87 ![]() |
Bonjour,
J'ai une base de données qui contient des marques, chaque marque appartenant à une (ou plusieurs) activité, elle même dépendant d'un secteur. A chaque fois que je fais un select de mes marques en fonction du secteur je dois me coltiner les jointures de 4 tables ! (marque, marque_has_activite, activite, secteur). J'ai déjà demandé ici si ma requête était "optimale" et on m'a répondu que oui, pourtant quand j'affiche mes marques triées par secteur je trouve ça lent... J'ai cherché du côté des index mais j'avoue que je trouve le concept bien flou ! Et puis je me suis dit aussi, pourquoi ne pas faire une vue avec chaque marque + ses activités + ses secteurs et là indexer quelque chose. Seul hic : Comment faire ça ? Quand la vue doit-elle être mise en place ? Quand doit elle-être maj ? Et sur quoi mettre mes index ?? Please aidez moi ! Je vous joins la requête que j'utilise fréquemment : (enseigne = marque) Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Postez le plan d’exécution de votre requête que vous considérez comme "lente", ainsi que le descriptif de vos tables.
Les jointures étant la base des SGBDR, cela reste le moyen optimal de récupérer des données, à condition que : 1) Le modèle de données soit correct 2) Les index bien définis 3) Les requêtes bien écrites Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : décembre 2007 Messages : 87 ![]() |
Merci de prendre le temps de me répondre ! mais euuh... Je me sens vraiment bête là...
Qu'est ce que le "plan d’exécution de ma requête" ? Mon modèle est correct normalement, ma requête, je vous l'ai postée pour que vous puissiez en juger. Quant aux index, ma question est "Où les mettre ?" Au cas où je me tromperais, voici une image tronquée de mon MRD (il manque quelques champs dans l'entité enseigne sur cette version)
|
|
|
00
|
|
|
#4 | ||
|
Membre confirmé
![]() |
Salut,
pour avoir le plan d'exécution tu peux faire : Code :
Après si tu peux poster le résultat de SHOW CREATE TABLE pour tes tables, c'est bien aussi .
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas. |
||
|
|
00
|
|
|
#5 | ||||
|
Futur Membre du Club
![]() Inscription : décembre 2007 Messages : 87 ![]() |
Merci merci Gizmo !!
Alors mon plan d’exécution est (désolé je ne sais pas comment vous présentez ça) : Code :
Code :
|
||||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
La requête a l'air effectivement correctement optimisée.
Vous parlez de tri, mais celui-ci n'apparait pas dans votre requête. Est-ce un tri via votre client ? Dans ce cas, c'est peut-être lui qui n'est pas très optimisé. Quelle est la volumétrie de votre retour de requête ?
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : décembre 2007 Messages : 87 ![]() |
Je me suis peut être mal exprimé, par tri je voulais parler de la clause "WHERE".
"Je trie mes marques par secteur". Si vous me dites que tout est correct alors ça me va... Je viens de faire des tests. Ce n'est pas vraiment cette requête qui ralentissait ma page, ce sont toutes les autres petites bidouillées... (ralalala les reprises de vieux code pour aller vite) Suis dégoutée d'y avoir passé autant de temps. Merci beaucoup à ceux qui m'ont aidé J'aurai au moins appris les EXPLAIN et les SHOW CREATE TABLE |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com