아래의 HINT를 잘 활용하면 엄청난 속도의 차이를 가져올 수 있다.
RULE : RULE BASE 옵티마이저를 사용.
FISRT_ROWS : 첫째 레코드의 추출시간을 최소화 할 목적으로 최적화.
ALL_ROWS : 모든 레코드를 처리하는 시간의 최소화를 목적으로 최적화.
FULL : 지정된 테이블에 대한 전체 스캔.
ROWID : 지정된 테이블에 대한 ROWID에 의한 테이블 스캔.
CLUSTER : 지정된 테이블에 애한 클러스터 스캔.
HASH : 지정된 테이블에 대한 해쉬 스캔.
INDEX_ASC : 내림차순(순차적)으로 INDEX를 스캔.
INDEX_DESC : 오름차순(역순)으로 INDEX 스캔.
AND_EQUALS : 여러개의 INDEX를 MERGE하여 사용(2~5개).
ORDERED : FROM절에 기술된 테이블 순으로 조인.
USE_NL : 먼저 특정 테이블의 ROW를 엑세스하고 그 값에 해당하는 다른 테이블의 ROW를 찾는 작업을 해당범위가지 실행하는 조인.
USER_MERGE : 먼저 각각의 테이블의 처리범위를 스캔하여 SORT한 후 서로 MERGE하면서 조인하는 방식.
PARALLEL : 병렬처리 프로세스의 개수를 지정.
CACHE : 테이블의 ROW들을 메모리내에 상주.
NOCACHE : 메모리내에 상주(Cache)시킨 옵션의 해제.
MERGE-AJ : 부정형의 조인(Anti-Join)을 소트머지 방식으로 수행.
HASH-AJ : 부정형의 조인을 해쉬조인(Hash-Join) 방식으로 수행.
사용예제.
SELECT /*+ ORDERED */ FROM ORDER1T A, ORDER2T B WHERE ...
이러면 옵티마이저가 스스로 판단하여 테이블 플랜을 만드는 것이 아니라 FROM절에 기술한 순서대로 플랜을 만든다.
이런 식으로 사용을 합니다.
댓글 없음:
댓글 쓰기