현재, 친절한 SQL튜닝이라는 책을 보고 있는데, 아래의 쿼리 힌트가 자주 사용된다고 하여 메모해둔 다음 틈틈이 보기 위해 남겨둔다.
분류 | 힌크 | 설명 |
최적화 목표
|
ALL_ROWS | 전체 처리속도 최적화 |
FIRST_ROWS(N) | 최초 N건 응답속도 최적화 | |
액세스 방식
|
FULL | Table Full Scan으로 유도 |
INDEX | Index Scan으로 유도 | |
INDEX_DESC | Index를 역순으로 스캔하도록 유도 | |
INDEX_FFS | Index Fast Full Scan으로 유도 | |
INDEX_SS | Index Skip Scan으로 유도 | |
조인 순서
|
ORDERED | FROM 절에 나열된 순서대로 조인 |
LEADING | LEADING 힌트 괄호에 기술한 순서대로 조인(T1 T2) | |
SWAP_JOIN_INPUTS | 해시 조인 시, Build Input을 명시적으로 선택(SWAP_JOIN_INPUTS(T1) | |
조인 방식
|
USE_NL | NL 조인으로 유도 |
USE_MERGE | 소트 머지조인으로 유도 | |
USE_HASH | 해시 조인으로 유도 | |
NL_SJ | NL 세미조인으로 유도 | |
MERGE_SJ | 소트 머지 세미조인으로 유도 | |
HASH_SJ | 해시 세미조인으로 유도 | |
서브쿼리 팩토링
|
MATERIALIZE | WITH 문으로 정의한 집합을 물리적으로 생성하도록 유도 예) WITH /*+ MATERIALIZE */ T AS (SELECT ...) |
INLINE |
WITH 문으로 정의한 집합을 물리적으로 생성하지 않고 INLINE 처리하도록 유도
예) WITH /*+ INLINE */ T AS (SELECT ...) |
|
쿼리 변환
|
MERGE | 뷰 머징 유도 |
NO_MERGE | 뷰 머징 방지 | |
UNNEST | 서브쿼리 Unnesting 유도 | |
NO_UNNEST | 서브쿼리 Unnesting 방지 | |
PUSH_PRED | 조인조건 Pushdown 유도 | |
NO_PUSH_PRED | 조인조건 Pushdown 방지 | |
USE_CONCAT | OR 또는 IN-List 조건을 OR-Expansion으로 유도 | |
NO_EXPAND | OR 또는 IN-List 조건에 대한 OR-Expansion 방지 | |
병렬 처리
|
PARALLEL | 테이블 스캔 또는 DML을 병렬 방식으로 유도 ex) PARALLEL(T1 2) |
PARALLEL_INDEX | 인덱스 스캔을 병렬 방식으로 처리하도록 유도 | |
PQ_DISTRIBUTE | 병렬 수행 시 데이터 분배 방식 결정 예) PQ_DISTRIBUTE(T1 HASH HASH) |
|
기타
|
APPEND | Direct-Path Insert 유도 |
DRIVING_SITE |
DB Link Remote 쿼리에 대한 최적화 및 실행 주체 지정(Local 또는 Remote)
|
|
PUSH_SUBQ | 서브쿼리를 가급적 빨리 필터링하도록 유도 | |
NO_PUSH_SUBQ | 서브쿼리를 가급적 늦게 필터링하도록 유도 |
'IT > ORACLE' 카테고리의 다른 글
DBeaver 쿼리에 띄어쓰기(공백)가 있을때 오류가 나는 현상해결 (0) | 2024.02.04 |
---|---|
Oracle Join시 Join 메서드 선택 전략 (0) | 2023.10.09 |
ORACLE Squence 초기화 시키는 프로시저 (0) | 2022.07.14 |