Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1250 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Une requette trop longue >> 'Explain' peut il m'aider?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Une requette trop longue >> 'Explain' peut il m'aider?

n°1227020
ous_a2i
Posté le 20-10-2005 à 12:48:57  profilanswer
 

Bonjour a tous,
la requete suivante est beaucoups trop longue à executer, alors que les champs necessaires sont tous indexes.
 
 explain SELECT DISTINCTROW FilmNeutre.NoIntFN, FilmNeutre.NoMereGen, FilmNeutre.CodeMatiere, FilmNeutre.Laize, FilmNeutre.Epaisseur, FilmNeutre.NoDossier, Dossiers.CodeClient, Dossiers.CodeArticle, FilmNeutre.Machine, FilmNeutre.NoIntProprietaire, FilmNeutre.CodeAide, FilmNeutre.CodeCond, FilmNeutre.RebutTotal, FilmNeutre.PoidsRebut, FilmNeutre.TypeSortie, Dossiers.NoCmdClient, Dossiers.QuantPoids, Dossiers.QuantNbre, Dossiers.QuantSurf, Dossiers.QuantLong FROM Dossiers INNER JOIN FilmNeutre ON Dossiers.NoDossier = FilmNeutre.NoDossier LEFT JOIN LiensAmont ON FilmNeutre.NoIntFN = LiensAmont.NoAmont WHERE (((FilmNeutre.TypeSortie)=1 Or FilmNeutre.TypeSortie=6) AND ((LiensAmont.NoAmont) Is Null)) ORDER BY FilmNeutre.NoDossier, FilmNeutre.NoIntFN ;  
 
Elle met 22 sec en moyenne a se lancer sous mysql et sous access(avec des donnees et une structure similaire) elle met moin de 5 sec.
 
Apres plusieurs heures de recherches je n'ai toujours pas su trouver d'ou cela pouvait bien provenir.
J'ai donc fait un explain de ma requete et le resultat est le suivant:
 
id select_type table          type  possible_keys key         key_len    ref                               rows    Extra
1  SIMPLE       Dossiers     ALL    PRIMARY       NULL       NULL        NULL                            22689   Using temporary; Using filesort
1  SIMPLE       FilmNeutre  ref     NoDossier      IX_9       11           stock.Dossiers.NoDossier  2         Using where
1  SIMPLE       LiensAmont ref     NoAmont       NoAmont 5             stock.FilmNeutre.NoIntFN 2         Using where; Using index; Distinct
 
Ma question est la suivante: pour le champ Nodossier qui est une clef primaire, je ne dois pas faire d'index puisqu'une clef primaire  
est automatiquement indexe (si je ne me trompe pas).
Or le resultat que me sort explain m'inquiete puisque dans les colones key, key_len et ref, les valeurs sont a NULL comme vous pouvez le voir.
Est ce normal que l'on ne voit pas le champ clef primaire apparaitre au lieu des valeurs NULL....
 
Cela expliquerait donc pkoi ma requette est si longue a s'executer...
pour que ceci soit corrige quelle conseil me donnez vous?
 
 
merci encore
 
--  
Ben younes Ousama  
- Epitech 5eme annee
- Ingenieur developpement A2I (Alliance Internationale Informatique)
- Web: http://www.noofs.com  

mood
Publicité
Posté le 20-10-2005 à 12:48:57  profilanswer
 

n°1227314
moi23372
Posté le 20-10-2005 à 17:24:42  profilanswer
 

ta requète est vraiment mal foutue :S
 
Pour optimisé une requete, faut faire des index sur les primary keys et sur les reference keys.
Ensuite, l'utilisation de l'opérateur EXISTS (corrélation) accélère également les requètes sql (quand on sait utiliser cette opérateur correctement)...
 
dernière question? c'est quoi ton basard "explain" j'ai encore jms vu ça de ma vie en SQL, ni sous access, ni sous sqlserver, ni sous oracle, ni sous mysql. Donc ça sort d'ou?

n°1227336
ous_a2i
Posté le 20-10-2005 à 17:47:30  profilanswer
 

Pour info explain est une fonction propre a mysql:
http://dev.mysql.com/doc/refman/5.0/fr/explain.html
 
Pour le reste ta reponse ne m'apporte pas beaucoups de lumiere sur la suite
en fait ce message est surtout adressé à des personnes maitrisant les messages
retournes par le fonction explain de mysql
car grace à son retour on peut surement comprendre pourquoi ma requette est aussi lente.
 
Merci quand meme pour ta reponse meme si elle est un peu agressive à mon gout lol.
 
 
--  
Ben younes Ousama  
- Epitech 5eme annee
- Ingenieur developpement A2I (Alliance Internationale Informatique)
- Web: http://www.noofs.com


Message édité par ous_a2i le 20-10-2005 à 17:48:53
n°1227351
moi23372
Posté le 20-10-2005 à 17:58:25  profilanswer
 

ah oui je vois ce que ça fais ce truc!
 
ben si je t'ai dis comment améliorer ta requète... Combien de record à tu dans tes tables afin que je me fasse une petit idée ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Une requette trop longue >> 'Explain' peut il m'aider?

 

Sujets relatifs
problème lecture d'une donnée url longueExécution longue d'un script suite à un formulaire
probleme de requette php[SQL Server] Procédure stockée trop longue
[MySQL] Cherche 3eme dan Optimisation: requette avec SubQuery correléeUne macro trop longue
<br> qui saute 2 fois à la ligne si celle-ci est trop longue ?Requette INSERT possible?
je veux un creer chant "table"! et j'ai une erreur lors de la requetteListBox ou ListView => chaîne trop longue, cmt passer à la ligne
Plus de sujets relatifs à : Une requette trop longue >> 'Explain' peut il m'aider?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR