ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오라클 힌트 정리(표)!!
    Oracle 2014. 6. 23. 14:53

    ● 개요

    힌트는 SQL 튜닝의 핵심부분으로 일종의 지시구문이다.

    SQL에 포함되어 쓰어져 Optimizer의 실행 계획을 원하는 대로 바꿀 수 있게 해준다.

    오라클 Optimizer라고 해서 항상 최선의 실행 계획을 수립할 수 는 없으므로 테이블이나 인덱스의

    잘못된 실행 계획을 개발자가 직접 바꿀 수 있도록 도와주는 것이다.

    사용자는 특정 SQL 문장에서 어떤 인덱스가 선택도가 높은지에 대해 알고 있는데 이경우 오라클

    서버의 Optimizer에 의존하여 나온 실행 계획보다 훨씬 효율적인 실행 계획을 사용자가 구사할 수 있다.


    ● 사용

    액세스 경로, 조인 순서, 병렬 및 직렬 처리, Optimizer의 목표를 변경 가능 하다.


    ● 오라클 힌트 사용 예


     SELECT /* +INDEX(인덱스명) */

    컬럼명,컬럼명 

    FROM 테이블명;

    주의! 주석 표시 뒤에 "+" 기호가 있다.


    ● INDEX Access Operation 관련 HINT


    /*+INDEX(table_name, index_name)*/

    INDEX를 순차적으로 스캔


    /*+INDEX_ASC(table_name, index_name)*/

    INDEX를 내림차순으로 스캔


    /*+INDEX_DESC(table_name, index_name)*/

    INDEX를 오름차순으로 스캔


    /*+INDEX_FFS(table_name, index_name)*/

    Full table scan보다 빠른Full index scan을 유도 합니다.



    /*+AND_EQUALS(index_name, index_name)*/

    여러개의 index merge 수행


    /*+FULL(table_name)*/

    지정된 테이블에 대한 전체 스캔


    ● JOIN Access Operation 관련 HINT


    /*+USE_MERGE(table1 , table2)*/

    지정된 테이블들의 조인이 SORT-MERGE형식으로 일어나도록 유도 합니다.


    /*+USE_HASH(tabl1, table2)*/

    각 테이블간 HASH JOIN이 일어나도록 유도 합니다.


    ● JOIN시 DRIVING 순서 결정 HINT


    /*+ORDERED*/

    From절에 기술된 테이블 순서대로 join이 일어나도록 유도 합니다.


    /*+LEADING(table_name1 , table_name2)*/

    파라미터에 명시된 테이블의 순서대로 JOIN


    /*+DRIING(table_name)*/

    해당 테이브을 먼저 DRIVING


    ● 기타 HINT


    /*+ ALL_ROWS */

    ALL_ROWS는 Full Table Scan을 선호하며 CBO(COST Based Optimiztion)는

    default로 ALL_ROWS를 선택 합니다.


    /*+CHOOSE*/

    RBO(Rule Based Optimization)인지 CBO(Cost Based Optimization) 인지를 선택 합니다. 만약 주어진 table의 통계 정보가 없다면 Rule Based 접근 방식을 사용 합니다.


    /*+RULE*/

    Rule Based 접근 방식을 사용하도록 지정 합니다.


    /*+CLUSTER(table_name)*/

    Cluster Scan을 선택하도록 지정한다. 따라서 clustered object들에만 적용 됩니다.





    'Oracle' 카테고리의 다른 글

    오라클 TCPDUMP 옵션 및 플래그  (0) 2014.06.30
    오라클(PL/SQL) 미리 정의된 예외처리  (0) 2014.06.25
    오라클 NVL 이란?  (0) 2014.06.19
    정렬시 null 값 위치 지정  (0) 2014.06.09
    crontab 설정 방법  (0) 2014.05.30
Designed by Tistory.