hint를 경우에 따라서 달리 주고 싶은데 어떻게 줘야 하는지 고수님들의 조언 부탁드립니다.
SELECT A.code, B.name, B.execdate, B.orddate, B.cnt
FROM TEST_A, TEST_B
WHERE ((:acc_dv = 'A' and A.code = '1234')
OR (:acc_dv = 'B' and B.execdate = trunc(sysdate))
OR (:acc_dv = 'C' and B.orddate = trunc(sysdate)))
위의 쿼리를 실행할때 acc_dv = 'A' 인경우는 TEST_A_IDX1을 태우고
acc_dv = 'B' 인경우는 TEST_B_IDX1을 태우고, acc_dv = 'C' 인경우는 TEST_A_IDX2을 태우고 싶습니다. 어떻게 hint를 줘야 할까요?
조인은 아래와 같습니다.
SELECT A.code, B.name, B.execdate, B.orddate, B.cnt
FROM TEST_A, TEST_B
WHERE TEST_A.code = TEST_B.code(+)
and ((:acc_dv = 'A' and A.code = '1234')
OR (:acc_dv = 'B' and B.execdate = trunc(sysdate))
OR (:acc_dv = 'C' and B.orddate = trunc(sysdate)))
acc_dv 가 A, B, C 3가지 경우로 나누어 HINT를 줄수 있을까요?