-
오라클 힌트 정리(표)!!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