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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL DB2] Index pour perf requête

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL DB2] Index pour perf requête

n°787589
Nestor
Posté le 06-07-2004 à 08:22:47  profilanswer
 

Salut à tous,  
 
ci-dessous une requête qui s'exécute bien trop lentement.  
Dans 90% des cas, cette requète contiendra en plus la clause AND INC.SGR_INC =?
Pouvez-vous me dire comment vous positionneriez des index pour améliorer les choses ?  
 
Merci d'avance.
 
 
SELECT INC.ID_INCIDENT AS INCIDENT,  
 INC.SGR_INC AS SGR,  
 INC.ANNEE_INC AS ANNEE,  
 INC.NDEF_ANNEE_SGR AS NUMERO,  
 EXP.PRODUIT AS REF_PRO,  
 EXP.FOURNISSEUR AS COFOR,  
 EXP.GA AS GA,  
 GMR.GM AS GM,  
 DEF.ID_ETAT_DEF AS ETAT_DEF,  
 INC.ETAT_SQI AS ETAT_SQI,  
 INC.DEMERITE AS DEMIF,  
 INC.ID_CREATEUR AS CREATEUR,  
 EXP.ID_FAMI_DEF AS FAMILLE_DEF,  
 SUBSTR(DTD.LIBELLE,1,10) AS TYPE_DEF,  
 SUBSTR(DPD.LIBELLE,1,15) AS PRECISION_DEF,  
 INC.DATE_INCIDENT AS DATE_CREATION,  
 EXP.FLAG_FNR_INT AS FLAG_FNR_INT  
FROM  XMUEII.ADFQTINC INC,  
 XMUEII.ADFQTEXP EXP,  
 XMUEII.ADFQTGMR GMR,  
 XMUEII.ADFQTDEF DEF,  
 XMUEII.ADFQTDTD DTD,  
 XMUEII.ADFQTDPD DPD  
WHERE  (INC.DATE_INCIDENT BETWEEN '2002-11-09' AND '2004-07-02' OR INC.DATE_INCIDENT IS NULL )
 AND DTD.LANGUE='fr'
 AND DPD.LANGUE='fr'  
 AND EXP.ID_GM=GMR.ID_GM  
 AND INC.ID_DEFAILLANCE=DEF.ID_DEFAILLANCE  
 AND EXP.ID_TYPE_DEF=DTD.ID_TYPE_DEF  
 AND EXP.ID_PREC_DEF=DPD.ID_PREC_DEF  
 AND INC.ID_EXPERTISE=EXP.ID_EXPERTISE  
ORDER BY DATE_CREATION DESC  
FOR FETCH ONLY OPTIMIZE FOR 10 ROWS  

mood
Publicité
Posté le 06-07-2004 à 08:22:47  profilanswer
 

n°787893
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-07-2004 à 11:46:35  profilanswer
 

Bah c'est simple... Tu fais un index sur chacune des tables utilisées par la requête.
 
Chacun de ses index contiendra l'intégralité des champs présents dans la clause WHERE.
 
Etant donné que tu n'as pas de group by ni autre joyeusetés, il n'y a à priori par de piège, donc cette règle devrait suffir.
 
N'hésite pas à faire deux index sur INC, un avec le champ SGR_INC et un sans.
 
Pour terminer, la plus grosse optimisation à laquelle tu puisse rêver, c'est de faire une vue à partir de cette requête, afin de ne pas avoir à refaire le plan d'éxécution (parceque c'est généralement la partie la plus longue d'une requête)


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

  [SQL DB2] Index pour perf requête

 

Sujets relatifs
[ASP][SQL][ACCESS][INSERT INTO] plusieurs enregistrements en une fois?requete sur champs vide
SQL... TOP 3-3 ??[vb.net] problème requête HTTP
[SQL Server 2000] Connexion sécurisée ?[Oracle/PL-SQL] Passer un tableau en paramètre d'une procedure stockée
Problème de requetes SQLRequête SQL et résultat
DBExpress SQL Server 
Plus de sujets relatifs à : [SQL DB2] Index pour perf requête


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