오라클자바커뮤니티에서 설립한 오엔제이프로그래밍
실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰,
닷넷 실무전문 강의)
[실습]
- 실습을 위한 예제 테이블 및 데이터는 아래 링크에서 확인 바랍니다.
http://www.onjprogramming.co.kr/oraclejavanew/oraclejava/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.onjprogramming.co.kr/oraclejavanew/oraclejava/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
댓글 없음:
댓글 쓰기