Oracle Hint 종류 및 설명
[Optimization Approaches and Goals - Optimization 접근과 목적]
/*+ ALL_ROWS */
설명 : 가장 좋은 단위 처리량의 목표로 문 블록을 최적화하기 위해 cost-based 방법을 선택합니다. (즉, 전체적인 최소의 자원 소비)
사용예
SELECT /*+ALL_ROWS */ EMPNO, ENAME FROM EMP WHERE EMPNO = 7655;
/*+ CHOOSE */
설명 : 최적자(optimizer)가 그 문에 의해 접근된 테이블을 위해 통계의 존재에 두는 SQL 문을 위해 rule-based 접근 방법과 cot-based 접근 방법 선택하게 합니다.
사용예
/*+ FIRST_ROWS */
설명 : 가장 좋은 응답 시간의 목표로 문 블록을 최적화하기 위해 cost-based 접근 선택합니다. (첫 번째 행을 되돌려 주는 최소의 자원 사용)
사용예
/*+ RULE */
설명 : 최적화를 고르는 접근방법을 선택합니다.
사용예
[Access Methods - 접근 방법]
/*+ AND_EQUAL(table index) */
설명 : 그만큼 실행 계획을 선택합니다. 그리고 여럿의 single-column 색인에 scan을 합병하는 접근 경로를 사용합니다.
사용예
/*+ CLUSTER(table) */
설명 : 명시 적으로 클러스터 스캔을 선택하여 지정된 테이블에 액세스합니다.
사용예
/*+ FULL(table) */
설명 : 명시 적으로 지정된 테이블에 대한 전체 테이블 스캔을 선택합니다.
사용예
/*+ HASH(table) */
설명 : 명시 적으로 해시 검색을 선택하여 지정된 테이블에 액세스합니다.
사용예
/*+ HASH_AJ(table) */
설명 : 지정된 테이블에 액세스하기 위해 NOT IN 부속 조회를 해시 antijoin으로 변환합니다.
사용예
/*+ HASH_SJ (table) */
설명 : NOT IN 하위 쿼리를 해시 방지 조인으로 변환하여 지정된 테이블에 액세스합니다.
사용예
/*+ INDEX(table index) */
설명 : 명시 적으로 지정된 테이블에 대한 인덱스 스캔을 선택합니다.
사용예
/*+ INDEX_ASC(table index) */
설명 : 명시 적으로 오름차순 범위 인덱스 스캔을 선택합니다.
사용예
/*+ INDEX_COMBINE(table index) */
설명 : INDEX_COMBINE 힌트에 대한 인수로 인덱스가 제공되지 않으면 옵티마이 저는 비트 맵 인덱스의 부울 조합이 비용 예상치가 가장 높은 것을 사용합니다.
특정 인덱스가 인수로 제공되면 옵티마이 저는 특정 비트 맵 인덱스의 일부 부울 조합을 사용하려고 시도합니다.
사용예
/*+ INDEX_DESC(table index) */
설명 : 지정된 테이블에 대해 내림차순 범위 스캔을 명시 적으로 선택합니다.
사용예
/*+ INDEX_FFS(table index) */
설명 : 전체 테이블 스캔이 아닌 빠른 전체 인덱스 스캔이 수행되도록 합니다.
사용예
/*+ MERGE_AJ (table) */
설명 : NOT IN 하위 쿼리를 병합 방지 조인으로 변환하여 지정된 테이블에 액세스합니다.
사용예
/*+ MERGE_SJ (table) */
설명 : 상관 된 EXISTS 부속 조회를 병합 semi-join으로 변환하여 지정된 표에 액세스합니다.
사용예
/*+ ROWID(table) */
설명 : 명시 적으로 지정된 테이블에 대해 ROWID에 의한 테이블 스캔을 선택합니다.
사용예
/*+ USE_CONCAT */
설명 : UNION ALL 집합 연산자를 사용하여 쿼리의 WHERE 절에서 조합 된 OR 조건을 복합 쿼리로 변환하도록합니다.
사용예
[Join Orders]
/*+ LEADING(테이블) */
설명 : Driving 테이블 결정, 힌트에 명시된 테이블이 먼저 Driving 합니다.
사용예
/*+ ORDERED */
설명 : Oracle은 FROM 절에 나타나는 순서대로 테이블을 조인합니다.
사용예
/*+ STAR */
설명 : 인덱스에서 중첩 루프 조인을 사용하여 큰 테이블을 마지막으로 조인하도록합니다.
사용예
[Join Operations]
/*+ DRIVING_SITE (table) */
설명 : 오라클이 선택한 사이트와 다른 사이트에서 쿼리 실행을 강제합니다.
사용예
/*+ USE_HASH (table) */
설명 : Oracle이 해시 조인을 사용하여 다른 행 소스와 함께 지정된 각 테이블을 조인하도록합니다.
사용예
/*+ USE_MERGE (table) */
설명 : 오라클이 sort-merge 조인을 사용하여 다른 행 소스와 함께 지정된 각 테이블을 조인하게합니다.
사용예
/*+ USE_NL (table) */
설명 : 지정된 테이블을 내부 테이블로 사용하여 중첩 루프 조인을 사용하여 Oracle이 지정된 각 테이블을 다른 행 소스에 조인하도록합니다
사용예
[Parallel Execution]
/*+ APPEND */ , /*+ NOAPPEND */
설명 : 데이터가 테이블에 간단하게 추가되거나 추가되지 않도록 지정합니다. 기존 여유 공간은 사용되지 않습니다. 이 힌트는 INSERT 키워드 다음에 사용하십시오.
사용예
/*+ NOPARALLEL(table) */
설명 : PARALLEL 절을 사용하여 테이블을 만들었더라도 테이블의 병렬 검색을 비활성화합니다.
사용예
/*+ PARALLEL(table, instances) */
설명 : 조작에 사용될 수있는 동시 슬레이브 프로세스의 원하는 수를 지정할 수 있습니다.
세션이 PARALLEL DML 가능 모드 인 경우에만 DELETE, INSERT 및 UPDATE 조작이 병렬 처리로 간주됩니다 (ALTER SESSION PARALLEL DML을 사용하여이 모드로 전환하십시오).
사용예
/*+ PARALLEL_INDEX */
설명 : PARALLEL 특성이 병렬 인 분할 된 인덱스와 분할되지 않은 인덱스에 대해 빠른 전체 인덱스 스캔을 병렬 처리 할 수 있습니다.
사용예
/*+ NOPARALLEL_INDEX */
설명 : 인덱스에 대한 PARALLEL 속성 설정을 무시합니다.
사용예
[Other Hints]
/*+ CACHE */
설명 : 힌트의 테이블에 대해 검색된 블록이 전체 테이블 스캔이 수행 될 때 버퍼 캐시에있는 LRU 목록의 가장 최근에 사용 된 끝에 배치되도록 지정합니다
사용예
/*+ NOCACHE */
설명 : 전체 테이블 스캔이 수행 될 때이 테이블에 대해 검색된 블록이 버퍼 캐시에있는 LRU 목록의 가장 최근에 사용되지 않은 끝에 배치되도록 지정합니다.
사용예
/*+ MERGE (table) */
설명 : 오라클은 주변 쿼리 이전에 복잡한 뷰 또는 하위 쿼리를 평가합니다.
사용예
/*+ NO_MERGE (table) */
설명 : Oracle에서 병합 가능한보기를 병합하지 않도록합니다.
사용예
/*+ PUSH_JOIN_PRED (table) */
설명 : 옵티마이 저가 개별 조인 술부를 뷰로 푸시할지 여부를 비용 기준으로 평가합니다.
사용예
/*+ NO_PUSH_JOIN_PRED (table) */
설명 : 조인 조건자를 뷰로 푸시하는 것을 방지합니다.
사용예
/*+ PUSH_SUBQ */
설명 : 병합되지 않은 하위 쿼리를 실행 계획의 가능한 가장 빠른 위치에서 평가합니다.
사용예
/*+ STAR_TRANSFORMATION */
설명 : 옵티마이저가 변환이 사용 된 최적의 플랜을 사용하게합니다.
사용예
'개발 > Database' 카테고리의 다른 글
데이터모델링의 개요 (0) | 2018.08.02 |
---|---|
REDO, UNDO (0) | 2018.07.26 |
관계(Relationship) (0) | 2018.07.26 |
MSSQL Identity 설정 On/Off (0) | 2017.01.25 |
[MS-SQL]특정 단어가 포함된 프로시저 검색 (0) | 2016.12.26 |