[펌]오라클힌트1
오라클 힌트 사용예
⑴ 개요 힌트는 SQL 튜닝의 핵심부분으로 일종의 지시구문이다 것이다. 사용자는 특정 SQL 문장에서 어떤 인덱스가 선택도가 높은지에 대해 알고 있는데 이 경우 오라클 서버의 Optimizer에 의존하여 나온 실행 계획보다 훨신 효율적인 실행계획을 사용자가 구사할 수 있다. ⑵ 사용법 힌트를 사용하여 아래와 같은 것들을 할 수 있다. 액세스 경로, 조인순서, 병렬 및 직렬처리 ,Optimizer의 목표(Goal)를 변경 가능 ⑶ 형태 SQL 문장 내에 [/*+ 힌트 내용 */] 이 추가된다. 주의! 주석 표시에 더하기(+)가 있다. -------------------------------------------------- select /*+ index( idx_col_1 ) */ name, age, hobby from member -------------------------------------------------- *오라클 힌트 사용표 INDEX ACCESS OPERATION 관련 HINT HINT 내용 사용법 INDEX INDEX를 순차적으로 스캔 INDEX(TABLE명, INDEX명) INDEX_DESC INDEX를 역순으로 스캔 INDEX_DESC(TABLE명, INDEX명) INDEX_FFS INDEX FAST FULL SCAN INDEX_FFS(TABLE명, INDEX명) PARALLEL_INDEX INDEX PARALLEL SCAN PARALLEL_INDEX(TABLE명,INDEX명) NOPARALLEL_INDEX INDEX PARALLEL SCAN 제한 NOPARALLEL_INDEX(TABLE명,INDEX명) AND_EQUALS INDEX MERGE 수행 AND_EQUALS(INDEX_NAME, FULL FULL SCAN FULL(TALBE명) JOIN ACCESS OPERATION 관련 HINT HINT 내용 사용법 USE_NL NESTED LOOP JOIN USE_NL(TABLE1, TABLE2) USE_MERGE SORT MERGE JOIN USE_MERGE(TABBLE1, TABLE2) USE_HASH HASH JOIN USE_HASH(TABLE1, TABLE2) HASH_AJ HASH ANTIJOIN HASH_AJ(TABLE1, TABLE2) HASH_SJ HASH SEMIJOIN HASH_SJ(TABLE1, TABLE2) NL_AJ NESTED LOOP ANTI JOIN NL_AJ(TABLE1, TABLE2) NL_SJ NESTED LOOP SEMIJOIN NL_SJ(TABLE1, TABLE2) MERGE_AJ SORT MERGE ANTIJOIN MERGE_AJ(TABLE1, TABLE2) MERGE_SJ SORT MERGE SEMIJOIN MERGE_SJ(TABLE1, TABLE2) JOIN시 DRIVING 순서 결정 HINT HINT 내용 ORDERED FROM 절의 앞에서부터 DRIVING DRIVING 해당 테이블을 먼저 DRIVING- driving(table) 기타 힌트 HINT 내용 append insert 시 direct loading parallel select, insert 시 여러 개의 프로세스로 수행- parallel(table, 개수) cache 데이터를 메모리에 caching nocache 데이터를 메모리에 caching하지 않음 push_subq subquery를 먼저 수행 rewrite query rewrite 수행 norewrite query rewrite 를 수행 못함 use_concat in절을 concatenation access operation으로 수행 use_expand in절을 concatenation access operation으로 수행 못하게 함 merge view merging 수행 no_merge view merging 수행 못하게 함
INDEX_NAME)