Index non utilisé dans une jointure
Bonjour,
Je rencontre un problème lié à la bonne utilisation des index sous Oracle 10g.
Je dispose d'une table case_variable :
Code:
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; |
A laquelle j'ai ajouté l'index suivant :
Code:
1 2 3 4
| CREATE INDEX INX_TCID_VAR_RK ON CASE_VARIABLE
(TCID, VARIABLE, RANK)
NOLOGGING
NOPARALLEL; |
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.
Je souhaite récupérer une liste de données, j'utilise la requête suivante :
Code:
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'; |
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 !
Car si j'exécute la requête suivante, l'index est correctement utilisé :
Code:
1 2 3
| SELECT *
FROM case_variable
WHERE tcid = 288069 AND variable = 'objet_dde'; |
Je précise que, n'étant pas admin de la base, je ne peux malheureusement pas faire de "explain plan".
Merci d'avance.