================================= 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)방식으로 수행