bonjour,
voici ma requete :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
select  TB_R_V_FUEL_AIRBORNE.I_CALL_MISC,TB_R_V_FUEL_AIRBORNE. V_DEP_AP_ACTUAL, TB_R_V_FUEL_AIRBORNE.V_ARR_AP_ACTUAL, 
avg( I_FUEL_AIRBORNE), 
avg(I_FUEL_BLOC), 
avg(i_JAUGEUR_ARR), 
avg(I_JAUGEUR_DEP),
avg( I_NIV_MAX), 
avg( I_REEL_AIRBORNE)
 from TB_R_V_FUEL_AIRBORNE ,
  TB_R_V_FUEL_BLOC, 
  TB_R_V_JAUGEUR_ARR, 
  TB_R_V_JAUGEUR_DEP, 
  TB_R_V_NIV_MAX, 
  TB_R_V_REEL_AIRBORNE
where TB_R_V_FUEL_AIRBORNE.I_CALL_MISC=  TB_R_V_FUEL_BLOC.I_CALL_MISC
and TB_R_V_FUEL_AIRBORNE.I_CALL_MISC=   TB_R_V_JAUGEUR_ARR.I_CALL_MISC
and TB_R_V_FUEL_AIRBORNE.I_CALL_MISC=   TB_R_V_JAUGEUR_DEP.I_CALL_MISC
and TB_R_V_FUEL_AIRBORNE.I_CALL_MISC=  TB_R_V_NIV_MAX.I_CALL_MISC
and TB_R_V_FUEL_AIRBORNE.I_CALL_MISC=  TB_R_V_REEL_AIRBORNE.I_CALL_MISC
and TB_R_V_FUEL_AIRBORNE.I_ANNEE=  TB_R_V_FUEL_BLOC.I_ANNEE
and TB_R_V_FUEL_AIRBORNE.I_ANNEE=   TB_R_V_JAUGEUR_ARR.I_ANNEE
and TB_R_V_FUEL_AIRBORNE.I_ANNEE=   TB_R_V_JAUGEUR_DEP.I_ANNEE
and TB_R_V_FUEL_AIRBORNE.I_ANNEE=  TB_R_V_NIV_MAX.I_ANNEE
and TB_R_V_FUEL_AIRBORNE.I_ANNEE=  TB_R_V_REEL_AIRBORNE.I_ANNEE
and TB_R_V_FUEL_AIRBORNE.I_mois=  TB_R_V_FUEL_BLOC.I_mois
and TB_R_V_FUEL_AIRBORNE.I_mois=   TB_R_V_JAUGEUR_ARR.I_mois
and TB_R_V_FUEL_AIRBORNE.I_mois=   TB_R_V_JAUGEUR_DEP.I_mois
and TB_R_V_FUEL_AIRBORNE.I_mois=  TB_R_V_NIV_MAX.I_mois
and TB_R_V_FUEL_AIRBORNE.I_mois=  TB_R_V_REEL_AIRBORNE.I_mois
 
and TB_R_V_FUEL_AIRBORNE.V_DEP_AP_ACTUAL=  TB_R_V_FUEL_BLOC.V_DEP_AP_ACTUAL
and TB_R_V_FUEL_AIRBORNE.V_DEP_AP_ACTUAL=   TB_R_V_JAUGEUR_ARR.V_DEP_AP_ACTUAL
and TB_R_V_FUEL_AIRBORNE.V_DEP_AP_ACTUAL=   TB_R_V_JAUGEUR_DEP.V_DEP_AP_ACTUAL
and TB_R_V_FUEL_AIRBORNE.V_DEP_AP_ACTUAL=  TB_R_V_NIV_MAX.V_DEP_AP_ACTUAL
and TB_R_V_FUEL_AIRBORNE.V_DEP_AP_ACTUAL=  TB_R_V_REEL_AIRBORNE.V_DEP_AP_ACTUAL
 
and TB_R_V_FUEL_AIRBORNE.V_ARR_AP_ACTUAL=  TB_R_V_FUEL_BLOC.V_ARR_AP_ACTUAL
and TB_R_V_FUEL_AIRBORNE.V_ARR_AP_ACTUAL=   TB_R_V_JAUGEUR_ARR.V_ARR_AP_ACTUAL
and TB_R_V_FUEL_AIRBORNE.V_ARR_AP_ACTUAL=   TB_R_V_JAUGEUR_DEP.V_ARR_AP_ACTUAL
and TB_R_V_FUEL_AIRBORNE.V_ARR_AP_ACTUAL=  TB_R_V_NIV_MAX.V_ARR_AP_ACTUAL
and TB_R_V_FUEL_AIRBORNE.V_ARR_AP_ACTUAL=  TB_R_V_REEL_AIRBORNE.V_ARR_AP_ACTUAL
and TB_R_V_FUEL_AIRBORNE.I_MOIS=04
and TB_R_V_FUEL_AIRBORNE. I_ANNEE=2008
group by  TB_R_V_FUEL_AIRBORNE.I_CALL_MISC,TB_R_V_FUEL_AIRBORNE. V_DEP_AP_ACTUAL, TB_R_V_FUEL_AIRBORNE.V_ARR_AP_ACTUAL
Voila ce sont des tables sans clés. Je cherche à faire des moyennes sur chaque valeur.
Le problème est qu'elle est hyper longue à s'executer...
J'ai fait des index sur i_annee, i_mois, v_call_misc de chaque table.

Voici mon explain plan:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT STATEMENT Optimizer=CHOOSE
  SORT (GROUP BY)
    TABLE ACCESS (BY INDEX ROWID) OF TB_R_V_FUEL_BLOC
      NESTED LOOPS
        NESTED LOOPS
          NESTED LOOPS
            NESTED LOOPS
              NESTED LOOPS
                TABLE ACCESS (BY INDEX ROWID) OF TB_R_V_FUEL_AIRBORNE
                  INDEX (RANGE SCAN) OF IX_TB_R_V_FUEL_AIR_01 (NON-UNIQUE)
                TABLE ACCESS (BY INDEX ROWID) OF TB_R_V_REEL_AIRBORNE
                  INDEX (RANGE SCAN) OF IX_TB_R_V_REEL_AIR_02 (NON-UNIQUE)
              TABLE ACCESS (BY INDEX ROWID) OF TB_R_V_NIV_MAX
                INDEX (RANGE SCAN) OF IX_TB_R_V_NIV_MAX_02 (NON-UNIQUE)
            TABLE ACCESS (BY INDEX ROWID) OF TB_R_V_JAUGEUR_DEP
              INDEX (RANGE SCAN) OF IX_TB_R_V_JAUGEUR_DEP_02 (NON-UNIQUE)
          TABLE ACCESS (BY INDEX ROWID) OF TB_R_V_JAUGEUR_ARR
            INDEX (RANGE SCAN) OF IX_TB_R_V_JAUGEUR_ARR_02 (NON-UNIQUE)
        INDEX (RANGE SCAN) OF IX_TB_R_V_FUEL_BLOC_01 (NON-UNIQUE)
JE n'arrive pas trop a le comprendre...
Il y a un truc que j'ai oublié?

Merci à vous.