select .....
from ( select col_1
, col_2
, col_3
, col_4
, col_5
from tab_1
union all
select col_1
, null
, null
, null
, col_5
from tab_2
) a
, tab_3 b
, tab_4 c
where a.col_1 *= b.col_1
and a.col_5 *= b.col_5
and b.del_yn = 'n'
and a.col_4 = c.code_no (+)
and c.code_part(+) = 'A0001'
group by a.col_1;
와 같은 sql 문장이 있습니다.
그런데 tab_2(b) 테이블에 col_1 + col_5 index가 없습니다.
문제는 oracle의 경우 위와 같은 경우 sort merge라는 방법을 사용하여
query를 합니다.
그런데 sybase인 경우 Nested iteration 을 사용하더군요..
위 sql문장을 orcle에서 수행한 경우 응답시간이 2초인데 반하여
sybase에서 수행한 경우 거의 10분이 넘어갑니다.
tab_3데이타는 tab_1 데이타의 약 3~4배 정도 됩니다.(30000 ~ 50000)건 정도
물론 index를 사용하면 간단하게 해결이 되겠지만..
저도 질문을 받은거라 그런거를 용납을 안하네요..
고수님들의 의견을 부탁합니다
|