Bonjour

J'ai un problème avec la requête suivante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
*
FROM
	DWH_SIS_APPLICATION.DWH_MOIS DWH_MOIS
	,SIS_APPLICATION.I_INVESTIGATIONS I_INVESTIGATIONS
	,SIS_APPLICATION.L_LOCALISATIONS L_LOCALISATIONS
	,DWH_SIS_APPLICATION.DWH_RR_DM_MOIS DRDM
WHERE
	I_INVESTIGATIONS.ID_INVESTIGATION = L_LOCALISATIONS.ID_INVESTIGATION
	AND DRDM.DM_MOIS=DWH_MOIS.DM_MOIS
	AND DRDM.D_FIRST_MONTH < I_INVESTIGATIONS.D_END

J'ai un index sur tous les champs utilisés dans la where clause.

DWH_MOIS contient les mois à calculer
DWH_RR_DM_MOIS contient tous les RRRRMM jusque 2023 (indexs sur tous les champs de cette table
Il y a des L_LOCALISATIONS dans I_INVESTIGATIONS


Dans AND DRDM.D_FIRST_MONTH < I_INVESTIGATIONS.D_END, si je me mets un = à la place de <, il utilise tous les indexs parfaitement. Par contre si je mets un <, il utilise pas les index.

Je ne comprend pas pourquoi ! Une idée ?

Merci,

EDIT

AVEC =

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Operation	Object Name	Rows	Bytes	Cost	Object Node	In/Out	PStart	PStop
 
SELECT STATEMENT Optimizer Mode=FIRST_ROWS		11  	 	27  	 	      	             	 
  TABLE ACCESS BY INDEX ROWID	SIS_APPLICATION.L_LOCALISATIONS	1  	39  	2  	 	      	             	 
    NESTED LOOPS		11  	869  	27  	 	      	             	 
      NESTED LOOPS		8  	320  	11  	 	      	             	 
        NESTED LOOPS		1  	27  	2  	 	      	             	 
          INDEX FULL SCAN	DWH_SIS_APPLICATION.DWH_MOIS_PK	24  	120  	1  	 	      	             	 
          TABLE ACCESS BY INDEX ROWID	DWH_SIS_APPLICATION.DWH_RR_DM_MOIS	1  	22  	1  	 	      	             	 
            INDEX UNIQUE SCAN	DWH_SIS_APPLICATION.DWH_RR_MOI_PK	1  	 	0  	 	      	             	 
        TABLE ACCESS BY INDEX ROWID	SIS_APPLICATION.I_INVESTIGATIONS	8  	104  	9  	 	      	             	 
          INDEX RANGE SCAN	SIS_APPLICATION.I_I_INV_D_END	9  	 	1  	 	      	             	 
      INDEX RANGE SCAN	SIS_APPLICATION.LLOC_UK	1  	 	1
AVEC <
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Operation	Object Name	Rows	Bytes	Cost	Object Node	In/Out	PStart	PStop
 
SELECT STATEMENT Optimizer Mode=FIRST_ROWS		236 K	 	19  	 	      	             	 
  HASH JOIN		236 K	30 M	19  	 	      	             	 
    TABLE ACCESS FULL	DWH_SIS_APPLICATION.DWH_RR_DM_MOIS	263  	5 K	3  	 	      	             	 
    NESTED LOOPS		209  	11 K	15  	 	      	             	 
      NESTED LOOPS		9  	468  	11  	 	      	             	 
        TABLE ACCESS FULL	SIS_APPLICATION.L_LOCALISATIONS	9  	351  	2  	 	      	             	 
        TABLE ACCESS BY INDEX ROWID	SIS_APPLICATION.I_INVESTIGATIONS	1  	13  	1  	 	      	             	 
          INDEX UNIQUE SCAN	SIS_APPLICATION.IOND_PK	1  	 	0  	 	      	             	 
      INDEX FAST FULL SCAN	DWH_SIS_APPLICATION.DWH_MOIS_PK	23  	115  	0