Construction requête => longue exécution
bonjour,
voici ma requete :
Code:
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:
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.