상세 컨텐츠

본문 제목

ORACLE HINT 정리

프로그래밍/DB

by 라제폰 2008. 12. 29. 18:30

본문

=================================  flyOracle 발췌 ===========================

* RULE : RULE BASE 옵티마이져 사용


* FIRST_ROWS : 첫째 레코드의 추출시간을 최소화 할 목적으로 최적화


* ALL_ROWS : 모든 레코드를 모두 처리하는 시간의 최소화는 목적으로 최적화


* FULL : 지정된 테이블에 대한 전체 스캔


* ROWID : 지정된 테이블에 대한 ROWID에 의한 테이블 스캔


* CUSTER : 지정된 테이블에 대한 클러스터 스캔


* HASH : 지정된 테이블에 대한 해쉬 스캔


* INDEX : 특정한 인덱스를 사용함을 알림


      SELECT /*+ INDEX(order item_index_name) */ *

      FROM order

      WHERE item > '';


* INDEX_ASC : 내림차순(순차적)으로 INDEX를 스캔


* INDEX_DESC : 오름차순(역순)으로 INDEX를 스캔


       SELECT /*+ INDEX_DESC(A WORK_INDEX) */ WORK_CODE, WORK_NAME

       FROM JOB A

       WHERE WORK = 'SALES';


* AND_EQUALS : 어려개의 IDNEX들을 MERGE하여 사용(2~5개)


* ORDERED : FROM절에 기술된 TABLE순으로 JOIN


       SELECT /*+ ORDERED */ *

       FROM   table_1 a, table_2 b

       WHERE a.column_1 = b.column_1

       AND      a.column_2 between 'a' and 'c'

       AND      b.column_1 = 'a';


        정상적인 경우 옵티마이져는 "="로 비교 되고 있는 table_2를 먼저 access 한다.

       이때 table_2의 분포도가 table_1의 분포도 보다 좋지 못할때는 조회에 따른 비요을

       많이 소비하게된다.

        ORDERED hint를 사용해서 테이블 기술 순서데로 access하도록 수정한다.


* USE_NL : 먼저 특정 TABLE의 ROW를 액세스하고 그 값에 해당하는 다른 TABLE의 ROW를

              찾는 작업을 해당법위까지 실행하는 조인


* USE_MERGE : 먼저 각각의 TABLE의 처리범위를 스캔하여 SORT한 후 서로 MERGE하면서

                      JOIN하는 방식


* PARALLEL : 병렬처리 프로세서의 개수를 지정


* CACHE : 테이블의 로우들을 메모리내에 상주


* NOCHACHE : 메모리내에 상주(Cache)시킨 옵션의 해제


* MERGE-AJ : 부정형의 조인(Anti-Join)을 소트머지 방식으로 수행


* HASH-AJ : 부정형의 조인을 해쉬조인(Hash Join)방식으로 수행


관련글 더보기