2013년 11월 20일 수요일

[Oracle Hint]INDEX_FFS를 이용한 MINUS 연산 SQL튜닝 , 힌트를이용한튜닝,SQL튜닝,SQL학원 [Hint]INDEX_FFS

[Oracle Hint]INDEX_FFS를 이용한 MINUS 연산 SQL튜닝 , 힌트를이용한튜닝,SQL튜닝,SQL학원

[Hint]INDEX_FFS를 이용한 MINUS 연산 SQL튜닝

구로디지털 오엔제이프로그래밍실무교육센터
www.onjprogramming.co.kr
 
[실습]
 
-      실습을 위한 예제 테이블 및 데이터는 아래 링크에서 확인 바랍니다.
http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecOrccleTun&wr_id=53&page=0&sca=&sfl=&stx=&sst=&sod=&spt=0&page=0
 
myemp1 : 1000만건
myemp1_old : 100만건
mydept : 5건
 
테스트환경 : oracle 11g
 
 
 
1번 문장과 2번 문장은 20초 정도 차이가 났다. minus로 빼는 연산인 경우 select 리스트의 컬럼에 대해 인덱스를 만들고 index_ffs 힌트를 이용해 인덱스 패스트 풀 스캔하면 조금 성능이 나아 진다.
 
테스트 해보라...
 
index_ffs 힌트는 다음 URL을 참고
(http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecHINT&wr_id=64&sca=&sfl=wr_subject&stx=index_ffs&sop=and)
 
1.
with a as (
select ename, sal from myemp1
minus
select ename, sal from myemp1_old
)
select count(ename) from a  --47초
 
2.
with a as (  --27초
select /*+ index_ffs(e1 IDX_MYEMP1_ENAME_SAL) */ ename, sal from myemp1 e1
minus
select /*+ index_ffs(e1 IDX_MYEMP1_OLD_ENAME_SAL) */ ename, sal from myemp1_old e2
)
select count(ename) from a 

댓글 없음:

댓글 쓰기