J'essaie désespérément d'exécuter une requête - plutôt basique - en espérant la voir passer par un index, et, quelque soit le sens je n'y parviens pas.
J'utilise une base Oracle 8i sur Unix 5.2


voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 SELECT
  TB_O_LIG_TKV.NB_LIG_TKV_QT g,
  TB_O_ENT_TKV.ID_TPS_JOU ID_JOU
FROM 
  ODS.TB_O_LIG_TKV TB_O_LIG_TKV,
  ODS.TB_O_ENT_TKV TB_O_ENT_TKV
WHERE 
TB_O_ENT_TKV.ID_TPS_JOU > ((to_number(to_char(sysdate,'yyyy'))-1)*10000)+101
AND  TB_O_ENT_TKV.ID_ENT_TKV=TB_O_LIG_TKV.ID_ENT_TKV


sur Toad, j'obtiens l'Explain Plan suivant :
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 Hint=CHOOSE		796 K	 	100670  	 	      	  	 
HASH JOIN		796 K	49 M	100670  	 	      	  	 
TABLE ACCESS BY INDEX ROWID	TB_O_ENT_TKV	796 K	29 M	1186  	 	      	  	 
INDEX RANGE SCAN	IX_FK_ENT_TKV_TPS_JOU	796 K	 	701  	 	      	  	 
TABLE ACCESS FULL	TB_O_LIG_TKV	19 M	487 M	28303

la table tb_o_ent_tkv possède 16 M lignes et les indexes sont les suivants :
IX_ENT_TKV_ID_COL (CD_ENT_TKV_ID_COL)
IX_FK_ENT_TKV_EMP (ID_EMP)
IX_FK_ENT_TKV_TPS_JOU (ID_TPS_JOU)
PK_ENT_TKV (ID_ENT_TKV)


la table tb_o_lig_tkv, quant à elle, dispose de 19,6 M lignes et les indexes sont les suivants :

IX_FK_LIG_TKV_UVC (ID_UVC)
IX_LIG_TKV_ID_ENT (ID_ENT_TKV)
IX_LIG_TKV_TYP_ENT (CD_LIG_TKV_TYP, ID_ENT_TKV)
PK_LIG_TKV (ID_LIG_TKV)



j'ai tenté d'ajouter des commandes du type /*+ leading (ODS.TB_O_LIG_TKV IX_LIG_TKV_ID_ENT) */ afin de forcer l'utilisation de l'index...
...mais rien n'y fait.