IT모아

오라클 힌트 정리(표)!! 본문

Oracle

오라클 힌트 정리(표)!!

아롱사태남 2014.06.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
오라클 힌트 정리(표)!!  (2) 2014.06.23
오라클 NVL 이란?  (0) 2014.06.19
정렬시 null 값 위치 지정  (0) 2014.06.09
crontab 설정 방법  (0) 2014.05.30
2 Comments
댓글쓰기 폼