유닉스용 오라클 9i 사용중이며
start with를 하면서 다른 테이블과 조인을 맺으면서
BOM 전개하니 시간이 너무 많이 걸려서 포기하고 있었는데
여기를 통해서 인덱스를 사용한 시간 절약 가능한 기능을 알게되었습니다.
select /*+ FIRST_ROWS */a.ccode_item,
b.code_item_name,
b.item_size,
b.unit,
c.car_name
from biz01.tbl_bom a,
biz01.tbl_itemcode b,
biz01.tbl_goods_car_kind c
where a.ccode_item = b.code_item
and b.car_code = c.car_code (+)
and b.item_kind <> 'I'
start with a.pcode_item = 'AB1D610007'
and '20081218' between a.s_date and a.e_date
connect by prior a.ccode_item = a.pcode_item
and '20081218' between a.s_date and a.e_date
and prior b.jodal_code not in ( '11', '12', '51', '52' );
머 이렇게 하면 효과가 있더군요. 이런 것을 튜닝이라고 하는 것 같은데.
제가 파워빌더로 개발하는데 파워빌더에서는 /* */ 가 주석 처리하도록 해서 그런지
스크립트 안에 넣고 실행하면 /*+ FIRST_ROWS */ 가 제대로 동작하지 않는 것 같습니다.
생각을 잘 못 하고 있는지 모르겠지만, 이 기능(실행계획?)을 DB자체에 설정으로 넣어 주고 싶습니다.
init.ora는 첨부파일에 넣어 두었으니 봐주십시요.
어떤 것을 어떻게 설정해야 full scan이 아닌 index 위주의 쿼리로 실행되도록 할 수 있을까요?