알아두면 쓸데있는 IT 잡학사전

개발/Database +7

[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