Tuning2008/12/04 15:39

CREATE INDEX emp_empno_idx ON emp(empno)  ;

CREATE INDEX emp_sal_idx ON emp(sal)  ;

 

SELECT /*+USE_CONCAT*/ *

FROM emp

WHERE empno > 7000

          OR sal < 3000 ; 

- OR 연산자는 데이터 양이 많아질 수 있어 풀스켄 할 가능성이 높아진다.
   USE_CONCAT 은 각각의 인덱스를 모두 사용할 수 있도록 힌트를 준다

 

SELECT /*+ USE_CONCAT */ *

FROM emp

WHERE deptno IN (10,20) ;

 

SELECT /*+NO_EXPAND*/ *

FROM emp

WHERE deptno IN (10,20) ;

 

SELECT /*+ MERGE(b) */ *

FROM emp a, ( SELECT deptno, AVG(sal) avg

                        FROM emp

                        GROUP BY deptno ) b

WHERE a.deptno = b.deptno

AND a.sal > b.avg ;

- 서브쿼리를 메인쿼리에 병합시켜 서브쿼리보다 조인작업이 먼저 일어나도록 한다.

 

CREATE INDEX dept_dname_idx ON dept(dname)  ;

 

SELECT /*+ NO_MERGE(b) */  *

FROM emp e, ( SELECT *

                        FROM dept

                        WHERE dname = 'SALES') b

WHERE e.deptno = d.deptno ;

- 서브쿼리부터 실행하도록 메인쿼리와 서브쿼리의 병합을 방지

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 청짱
TAG

TRACKBACK http://soseem.net/trackback/192 관련글 쓰기

댓글을 달아 주세요

  1. 신승호

    형님 퍼 갈게요 ^^*

    2008/12/05 11:56 [ ADDR : EDIT/ DEL : REPLY ]