|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : mai 2008 Messages : 14 ![]() |
Bonjour,
J'ai un souci sur une requête qui s'avère assez longue au niveau de l'éxecution. Je vous présente la requête : Code :
![]() Et un extrait du résultat attendu : ![]() Il y'a probablement un pb de jointure + un pb d'utilisation du MAX() mais si je retire les MAX() de ma requête je dois ajouter ces valeurs dans le GROUP BY et la requête retourne des lignes en doublon. j'ai essayé différentes choses, en long en large en travers mais rien à faire. Merci d'avance pour votre aide
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
je ne sais pas ce que vous entendez par "assez longue", mais je pencherai plutôt pour un manque d'index... qu'avez vous comme index sur les tables qui entrent en jeu dans votre requête ? D'après votre schéma, vous ne semblez pas avoir défini toutes les contraintes d’intégrité referentielles... (par exemple entre ASS_Reglements et ASS_CodeExerAffEnt ) est-ce le cas ? au passage, quel est votre SGBDR ? |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 14 ![]() |
Par "assez longue" j'entends que le traitement prend 20-25 sec.
Je n'ai pas d'index sur ces tables, je ne suis pas familier avec les index mais je vais creuser de ce coté là. "contraintes d’intégrité referentielles" << je ne suis pas sur de comprendre, s'agit'il de contrainte de clés primaires/secondaires ? Mon SGBDR est SQL Server 2000 |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
Citation:
Avez vous au final besoin de récupérer l'ensemble des résultats, ou comptez vous filtrer sur pour ne garder que certaines lignes ? Une autre piste aussi : Il semble que vous ayez des taux spécifiques pour certaines affaires, d'ou les jointures externes... peut être pourriez vous prévoir deux requêtes avec UNION ALL, l'une pour les taux spécifiques : l'autre pour les taux classiques : Ça fera une jointure interne a chaque fois au lieu de deux jointures externes Vos CASES seraient en plus simplifiés... mais c'est a tester, car il n'est pas sur que cela donnera de meilleurs perfs... Et je ne suis pas certain non plus de ne pas avoir loupé qq chose dans la requete que vous avez postée. donc a vérifier, en comparant les temps/plan d’exécution des deux requêtes. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com