Est-il possible d'utiliser un index précis dans une requète sql en 10g?
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0
Bonjour,
J'ai une table d'affectation possédant une date de début.
j'ai creé un index 'TEST' sur cette date.(Un index avec la fonction TRUNC(start_date))
Lorsque j'effectue la requète suivante, voici le résultat de l'explain plan:
Code:
1 2 3 4 5 6 7 8
| select a.*
from P_ASSIGNMENTS a
where TRUNC(start_date) = TRUNC(TO_DATE('18/09/1997','DD/MM/YYYY'))
Operation Object Name Rows Bytes Cost
SELECT STATEMENT Optimizer Mode=ALL_ROWS 127 38
TABLE ACCESS BY INDEX ROWID P_ASSIGNMENTS 127 10 K 38
INDEX RANGE SCAN TEST 51 |
On utilise bien l'index.
J'aurais bien aimé savoir si avec la requète suivante, il est possible de faire référence à cet index.
Code:
1 2 3 4 5 6 7
| select a.*
from P_ASSIGNMENTS a
where TRUNC(start_date) = (select max(a1.start_date)
from p_assignments a1
where a1.person_id = a.person_id
and a1.sequence = a.sequence
and a1.end_date is null) |
Car pour le moment, il construit la "vue temporaire" et fait un table acces full sur P_ASSIGNMENT a.
Merci d'avance.