[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 */ 설명 : 옵티마이저가 변환이 사용 된 최적의 플랜을 사용하게합니다. 사용예 |