[ORA] - Optimisation d'une requete

- Optimisation d'une requete [ORA] - SQL/NoSQL - Programmation

Marsh Posté le 31-08-2006 à 13:27:00    

Bonjour,
 
J'ai une requete sur Oracle 9i qui prend pas mal de temps a s'executé. C'est dans le cadre d'un projet web Java/J2EE.
Voici la requete :
 
select
distinct methode.ID,
methode.WORKFLOW_ID,
methode.CODE,
ope.Code as OPE_CODE,
opeLabel.label as OPE_LABEL,
ele.label as ELE,
methodUsers.USER_UID as REDACTEUR_UID,
methode.ETAT,
methode.THEO_BEGIN_DATE,
methode.THEO_END_DATE,
methode.REAL_BEGIN_DATE,
methode.REAL_END_DATE,
methode.FIRST_DIFFUSION_DATE,
methode.LAST_DIFFUSION_DATE,
methode.IMPORTANCE,
methode.ARCHIVAGE,
methode.MARK,
methode.LAST_BAT_DATE,
methode.METHOD_VERSION,
methode.VERSION,
methode.TYPE_REPRISE,
methode.LANGUE_ORIGINE,
sujet.CODE as SUJET_CODE,
labelSujet.LABEL as SUJET_TITRE,
prof2.LABEL as METIER_LABEL,
sujetType.FK_IDPROFESSION as METIER_ID,
ty2.LABEL as TYPE_DOC_LABEL,
ty1.ID as TYPE_DOC_ID,
etapeCouranteWF.STEP_ID,
etapeCouranteWF.STATUS as WF_STATUS,
dl2.CODE as CODE_LOT,
ll1.LABEL as TITRE_LOT,
veh.ID as ID_VEHICLE,
veh.CODE as CODE_VEHICLE,
labelVeh.LABEL as LABEL_VEHICLE
from AE7QTME1 methode,
AE7QTLKA lienMethodeSujet,
AE7QTSU1 sujet,
AE7QTTS1 sujetType,
AE7QTSL1 labelSujet,
AE7QTPR1 prof1,
AE7QTPR2 prof2,
AE7QTTM1 tm1,
AE7QTTY1 ty1,
AE7QTTY2 ty2,
AE7QTOS2 etapeCouranteWF,
AE7QTMU1 methodUsers,
AE7QTOP1 ope,
AE7QTOP2 opeLabel,
AE7QTEL3 ele,
AE7QTLKB lkb,
AE7QTDL2 dl2,
AE7QTLL1 ll1,
AE7QTEV1 evePro,
AE7QTVD1 decoupage,
AE7QTVE1 veh,
AE7QTVL1 labelVeh
where methode.canceled=0
AND methode.ID = lienMethodeSujet.FK_METHOD_ID
and lienMethodeSujet.FK_SUBJECT_ID = sujet.ID
and lienMethodeSujet.WORKFLOW_FLAG = 1
and sujet.ID = labelSujet.FK_SUBJECT_ID
and methode.WORKFLOW_ID = etapeCouranteWF.ENTRY_ID
and methodUsers.FK_METHOD_ID = methode.ID
and methode.FK_OPE_ID=ope.ID
and opeLabel.FK_OPE_ID = ope.ID
and ele.FK_METHOD_ID = methode.ID
and ele.LANGUAGE ='fr_FR'
and opeLabel.LANGUAGE='fr_FR'
and methodUsers.USER_TYPE='REDACTEUR'
and labelSujet.LANGUAGE='fr_FR'
and methodUsers.USER_UID='E276281'
and etapeCouranteWF.STEP_ID=5
and lkb.FK_SUBJECT_ID=sujet.ID
and dl2.ID=lkb.FK_LOT_ID
and ll1.FK_LOT_ID=dl2.ID
and sujetType.ID = lkb.FK_TYPICAL_SUBJECT_ID
and evePro.FK_LOT_ID=dl2.ID
and decoupage.ID=evePro.FK_DECOUPAGE_ID
and veh.ID=decoupage.FK_VEHICLE_ID
and labelVeh.FK_VEHICLE_ID=veh.ID
and prof1.ID = sujetType.FK_IDPROFESSION
and lienMethodeSujet.FK_TYPICAL_METHOD_ID = tm1.ID
and prof2.FK_PROF_ID = prof1.ID
and ty1.ID = tm1.FK_TYPE_ID
and ty2.FK_TYPE_ID = ty1.ID
and ll1.language='fr_FR'
and ty2.LANGUAGE='fr_FR'
and prof2.LANGUAGE='fr_FR'
and labelVeh.LANGUAGE='fr_FR'
and
(
   etapeCouranteWF.STATUS='A_REDIGER' or etapeCouranteWF.STATUS='COMMENCE' or etapeCouranteWF.STATUS='EN_COURS_DE_REDACTION'
)
order by methode.THEO_BEGIN_DATE desc

 
Est ce que quelqu'un voit un moyen pour l'optimiser ? J'ai fait des jointures de base ne connaissant pas bien le SQL ...
 
Merci ! :??:  :??:  :??:

Reply

Marsh Posté le 31-08-2006 à 13:27:00   

Reply

Marsh Posté le 31-08-2006 à 14:28:32    

peut-être remplacer les OR par un IN :  
etapeCouranteWF.STATUS IN ('A_REDIGER', 'COMMENCE', 'EN_COURS_DE_REDACTION')

Reply

Sujets relatifs:

Leave a Replay

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