Bonjour,
Je rencontre un problème lié à la bonne utilisation des index sous Oracle 10g.
Je dispose d'une table case_variable :
A laquelle j'ai ajouté l'index suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TABLE CASE_VARIABLE ( TCID NUMBER(10) NOT NULL, VARIABLE VARCHAR2(64 BYTE) NOT NULL, TYPE NUMBER(5) NOT NULL, RANK NUMBER(5), VALUE VARCHAR2(2000 BYTE) ) LOGGING NOCOMPRESS NOCACHE NOPARALLEL NOMONITORING;
Je précise que la table ne possède pas de clef primaire, je ne sais pas si ça a de l'importance pour la suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE INDEX INX_TCID_VAR_RK ON CASE_VARIABLE (TCID, VARIABLE, RANK) NOLOGGING NOPARALLEL;
Je souhaite récupérer une liste de données, j'utilise la requête suivante :
Dans ce cas, il se trouve que l'index n'est pas utilisé (j'utilise le paramètre MONITORING et la table V$OBJECT_USAGE pour m'en assurer). Et je me demande bien pourquoi !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT w.id, obj.VALUE FROM workcase w INNER JOIN case_variable obj ON obj.tcid = w.id AND obj.variable = 'objet_dde';
Car si j'exécute la requête suivante, l'index est correctement utilisé :
Je précise que, n'étant pas admin de la base, je ne peux malheureusement pas faire de "explain plan".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT * FROM case_variable WHERE tcid = 288069 AND variable = 'objet_dde';
Merci d'avance.
Partager