Bonjour,

Je dois effectuer un update sur une table , et cet update est un update avec jointure, mais les temps de traitements sont super longs et je me pose des question, notamment sur ce bout de requete qui participe à la mise à jour :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
SELECT   MAX (TO_NUMBER (fait_meteo.fm_heure)) fm_heure,
         dim_station_meteo.gm_code_gdf,
         dw.fait_meteo.dt_id
    FROM dw.fait_meteo, dw.dim_station_meteo
   WHERE ((dim_station_meteo.gm_id = fait_meteo.gm_id))
     AND dim_station_meteo.gm_code_gdf = 95
     AND fait_meteo.dt_id = 1340
GROUP BY dim_station_meteo.gm_code_gdf, dw.fait_meteo.dt_id
J'ai volontairement filtré sur une date ( le 1340 ) et un code ( le 95 ).
Quand je regarde l'explain plan j'ai :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Operation	Object Name	Rows	Bytes	Cost	Object Node	In/Out	PStart	PStop
 
SELECT STATEMENT Optimizer Mode=CHOOSE		1  	 	7  	 	      	             	 
  SORT GROUP BY NOSORT		1  	90  	7  	 	      	             	 
    NESTED LOOPS		5  	450  	7  	 	      	             	 
      TABLE ACCESS FULL	DW.DIM_STATION_METEO	1  	42  	1  	 	      	             	 
      INDEX RANGE SCAN	DW.FAIT_METEO_IN	146  	6 K	6

On voit un TABLE ACCESS FULL, sachant que dans les indexes je n'ai que des PK sur fait_meteo.gm_id et dw.fait_meteo.fm_id ( pas de FK sur le gm_id, ni rien d'autre ) je me demande si il est normal d'avoir ce TABLE ACCESS FULL ?

Comment remédier à ce TABLE ACCESS FULL ?

Merci d'avance,