by 준 [Oracle Tuning] index range scan unique scan hint 힌트 [2016.04.01 13:17:54]
select col_b
from table_a
where col_a = 'A'
and col_b in ('111','222')
;
table_a의 PK는 col_a + col_b 입니다.
위 쿼리의 플랜을 떠보면 index range scan으로 풀리는데,
이걸 index unique scan으로 풀리도록 유도할 수 있을까요?
테이블의 레코드수는 3억건 가량이고,
col_a는 'A'값만 들어가있습니다. 실질적인 키는 col_b인 셈이죠.
in 절의 비교 갯수를 1000개로 늘렸더니 속도가 안나와서 질문 드립니다.
답변 감사드립니다.
인덱스 순서는 바꾸기 어려운 상태이고요..
with tt as
(
select '111' col from dual
union all select '222' col from dual
}
select col_b
from table_a a
, tt b
where a.col_a = 'A'
and a.col_b = b.col
이렇게 쿼리를 바꾸면 unique scan으로 바뀌어 속도가 나오긴 한데, 조건값을 1000개로 늘리자니
sql이 너무 길어지네요. 적절한 hint를 사용해 scan 방식을 바꿀 수 있지 않을까 생각했는데, 구조적으로 불가능하다는 말씀이신 것 같네요..