[SQL DB2] Index pour perf requête

Index pour perf requête [SQL DB2] - SQL/NoSQL - Programmation

Marsh Posté le 06-07-2004 à 08:22:47    

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  

Reply

Marsh Posté le 06-07-2004 à 08:22:47   

Reply

Marsh Posté le 06-07-2004 à 11:46:35    

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)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed