problème utilisation de bind variables
Bonjour,
J'essaie d'utiliser un plan d'exécution stocké pour une requête en utilisant des bind variables sur oracle 10.2.0.4:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
alter session set use_stored_outlines = test;
CREATE OR REPLACE OUTLINE plan1
FOR CATEGORY test ON
SELECT * FROM table
WHERE STATUT IN (:v0,:v1);
CREATE OR REPLACE OUTLINE plan2
FOR CATEGORY test ON
SELECT /*+ INDEX(xxx) */ *
FROM table
WHERE STATUT IN (:v0,:v1);
UPDATE OUTLN.OL$HINTS
SET OL_NAME=DECODE(OL_NAME,'PLAN2','PLAN1','PLAN1','PLAN2')
WHERE OL_NAME IN ('PLAN1','PLAN2');
drop outline plan2;
alter session set query_rewrite_enabled=true;
alter session set cursor_sharing=SIMILAR; |
lorsque je demande le plan de la requête
Code:
1 2
| SELECT * FROM table
WHERE STATUT IN (:v0,:v1); |
j'obtiens bien le plan stocké (qui utilise mon index)
si je demande celui de la requête
Code:
1 2
| SELECT * FROM table
WHERE STATUT IN (3,4); |
j'obtiens un autre plan au lieu de celui que j'ai stocké...
J'ai raté quelque chose???