Bonjour,

J'ai la requete suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
'with T1 as(select * from P_INFO_VISU_PRJT(:PRJT,:NB_TRBN)),'
                  +'T2 as(select NOM_PROJET,DATE_HEURE, REF_TURBINE_VALOREM as trbn, TEMP_EXTERIEUR from DATA_10MIN), '
                  +'T3 as (select * from T1 join T2 on T2.NOM_PROJET=:PRJT and T1.DT_HR=T2.DATE_HEURE and T1.REF_TURBINE_VALOREM=T2.trbn), '
                  +'T4 as (select max( DATE_HEURE_VALIDATION) as max_date,NOM_PROJET as T4_PRJT,REF_TURBINE_VALOREM as T4_TRBN from JOURNAL_CONDUITE where NOM_PROJET=:PRJT group by NOM_PROJET, REF_TURBINE_VALOREM), '
                  +'T5 as (select * from T3 left join T4 on T3.REF_TURBINE_VALOREM=T4.T4_TRBN and T3.NOM_PROJET=T4.T4_PRJT) '
                  +'select * from T5 left join JOURNAL_CONDUITE on T4_PRJT=JOURNAL_CONDUITE.NOM_PROJET and T4_TRBN=JOURNAL_CONDUITE.REF_TURBINE_VALOREM and max_date=JOURNAL_CONDUITE.DATE_HEURE_VALIDATION ';
Je ne suis pas du tout un as dans les jointures et je me demandais si on pouvait l'optimiser car ma base est relativement grosse (20G) et la requete met plusieurs minutes pour s'executer

Voici le plan :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
PLAN JOIN (JOIN (JOIN (JOIN (S ORDER I_STATUS_DT_PRJT_TRBN INDEX (I_STATUS_PRJT_DT_TRBN), C INDEX (I_CONFIG_STATUS_PRJT_COD_STATUS)), STATUS ORDER I_STATUS_DT_PRJT_TRBN INDEX (I_STATUS_PRJT_DT_TRBN)), STATUS ORDER I_STATUS_DT_PRJT_TRBN INDEX (I_STATUS_PRJT_DT_TRBN)), DATA_10MIN ORDER I_DATA_10MIN_DT_PRJT_TRBN INDEX (I_DATA_10MIN_PRJT_DT_TRBN))(T5 T3 T2 JOURNAL_CONDUITE ORDER I_JOURNAL_CONDUITE_PRJT_TRBN INDEX (I_JOURNAL_CONDUITE_PRJT_TRBN))SORT ((T5 T4 PUISS_TURBINE INDEX (I_PUISS_TURBINE_PRJT_VIT_VENT)))(JOURNAL_CONDUITE INDEX (I_JOURNAL_CONDUITE_PRJT_TRBN))
Merci