|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() sylvain RiviereDeveloppeur WINDEV Inscription : août 2012 Messages : 4 ![]() |
Bonjour à tous,
J'ai fait une mise à jour de Windev aujourd'hui. Je suis donc maintenant à la version 01F170078N# Je travaille avec des fichier HyperFile Classic Mon problème est le suivant : Toutes mes requêtes SQL sont devenues beaucoup plus lentes suite à cette mise à jour. Une requête qui avait un temps d'exécution de 25 centièmes de secondes, mais maintenant sous la nouvelle version une vingtaine de secondes. Apparement, cette nouvelle version de Windev 17 gèrerait de manière plus "stricte" les jointures externes. Je me suis donc posé la question : Est ce que j'écris correctement mes requêtes SQL ? (Je ne passe plus du tout par l'éditeur de requêtes parce qu'il est très limité à mon sens) Je vous poste donc le code SQL de ma requête afin que vous puissiez l'analyser, et m'aider à comprendre pourquoi elle est si lente Merci d'avance de vos futures réponse Cordialement Sylvain Riviere Le code SQL de la requête : Code sql :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre émérite
![]() Inscription : mars 2002 Messages : 846 ![]() |
16 fichiers pour tes données ?
Tu dois vraiment avoir peu de données... Moi déjà à 3 ça n'avance plus à rien... Bon, déjà, as-tu vraiment besoin de tous ces fichiers ? Ensuite, je ne sais pas si la syntaxe changera la vitesse d'exécution, mais personnellement j'écris mes jointures comme ça : Code :
Un seul post par problème. ça ne sert à rien de polluer le forum de TROIS posts identiques ! Donc tu n'auras plus de réponse de ma part (et très probablement des autres aussi) tant que tu n'auras pas effacé les posts inutiles) |
||
|
|
11
|
|
|
#3 |
|
Invité de passage
![]() sylvain RiviereDeveloppeur WINDEV Inscription : août 2012 Messages : 4 ![]() |
J'ai testé avec ta syntaxe.
Le résultat est le même Pour info la requete renvoie seulement 25 lignes. 15 jointures, est ce beaucoup trop pour une requête ? |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() sylvain RiviereDeveloppeur WINDEV Inscription : août 2012 Messages : 4 ![]() |
Mes utilisateurs veulent avoir ce genre de tableau "Récapitulatif"
à l'entrée de la fenêtre. Donc ce genre de requête.. Mais déja 25 secondes est ce cohérent même avec autant de jointures ? |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() sylvain RiviereDeveloppeur WINDEV Inscription : août 2012 Messages : 4 ![]() |
Finalement, plus je supprime de jointure, plus le tps d'execution s'ameliore.
Apres qq tests le nombre de jointures maximum acceptable est de 7 a 8 jointures. ( en tout cas pour cette requete en question ) Ce que je ne comprends pas c'est qu'avant ma mise à jour de Windev le tps de cette requete etait normal ( 25 centiemes ). La mise a jour a bien du faire qq chose ??? Du coup, comme le nombre de jointures semble etre au coeur du probleme J'ai reecris ma requete en utilisant plusieurs sous requetes pour repartir mes jointures. Resultat c'est plus rapide. Mais je me pose une question : En partant du principe que je travaille en client / serveur, Est ce que les resultats des sous requetes qui compose ma requete principale sont importés sur le poste client ou est ce que que ces resultats de sous requete reste en memoire sur me serveur ? En effet, Certains des postes clients sont en Algerie et le reseau n'est pas tres bon. Merci a ceux ou celles qui me répondront. |
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Inscription : mars 2002 Messages : 846 ![]() |
(Maintenant que tu n'as plus qu'un seul post pour ton sujet, je peux te répondre)
La requête contient effectivement beaucoup trop de jointures. Si c'est pour une 15aine de lignes au total, moi j'enlèverais même les fichiers que tu as en LEFT JOIN. Tu dis que tu as ré-écrit ta requête, mais est-ce que tu peux nous montrer le résultat actuel STP ? (et utilise les balise [CODE], en cliquant sur la touche # en haut) |
|
|
10
|
|
|
#7 |
|
Membre émérite
![]() Inscription : mars 2002 Messages : 846 ![]() |
Ah ! J'oubliais une piste de recherche :
J'ai remarqué que les recherches sur les rubriques non indexées sont beaucoup plus lentes depuis la dernière version. Tu devrais vérifier si ce n'est pas le cas pour toi, et si besoin, soit sortir le fichier, soit indexer la rubrique. |
|
|
10
|
|
|
#8 | |
|
Membre éprouvé
![]() Arnaud BenhamdineConsultant Inscription : octobre 2004 Messages : 209 ![]() |
Citation:
C'est plus la lecture des lignes qui prend le plus de temps. Ta dégradation de performances est incompréhensible pour moi et vient à mon avis d'un problème distinct des requetes. Pour tes jointures, la norme SQL indique que tu dois les écrire de cette façon : (((TABLE1 LEFT OUTER JOIN TABLE2 ON ...) LEFT OUTER JOIN TABLE3 ON ...) LEFT OUTER JOIN TABLE4 ON ...) Et non pas répéter TABLE1 à chaque ligne. Cdlt, Arnaud. |
|
|
|
10
|
|
|
#9 | |
|
Membre du Club
![]() Consultant informatique Inscription : octobre 2012 Messages : 31 ![]() |
Citation:
Cordialement |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com