HINT는 select, update, delete 문 사용시 옵티마이저의 파싱을 원하는 쪽으로 유도할 때 사용한다. 옵티마이저는 DB 객체에 대한 얼마나 많고 정확한 데이터를 가지고 있는가에 대한 의존도가 높아 옵티마이저가 더욱 효과적으로 SQL 연산을 수행하도록 할 때 사용자가 사용한다.
hint를 통하여 옵티마이저에게 알려 줄 수 있는 사항은 다음과 같다.
• SQL 연산을 위한 비용 기반 접근 방식의 목표 • 접근 방식 지정 • 인덱스보다 더 효과적인 스캔 방법 • 조인 순서 • 병렬 연산 등급 • 조인 연산hint 기능 사용시 구문이나 기타 오류가 발생하면 옵티마이저는 오류 메시지를 사용자에게 전달하지 않고 이를 무시하고 연산을 수행한다.
/* ... */ | 여러 줄이 힌트임을 알려줌 |
-- | 한줄의 힌트를 사용하는 경우 |
SQL> select /* aaaaa */ 2 * 3 from dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> select /* aaaaa 2 bbbbbb */ 3 * 4 from dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> select -- aaaaa 2 * from dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL>
힌트의 종류는 다음과 같다.종류 | 설명 |
---|---|
RULE | 규칙 기반 옵티마이저 사용 |
first_rows | 첫째 레코드의 추출 시간을 최소화할 목적으로 최적화 |
all_rows | 모든 레코드를 모두 처리하는 시간을 최소화할 목적으로 최적화 |
full | 지정된 테이블에 대한 전체 스캔 |
rowid | 지정된 테이블에 rowid에 의한 테이블 스캔 |
cluster | 지정된 테이블에 cluster 스캔 |
hash | 지정된 테이블에 hash 스캔 |
index_asc | 오름차순으로 인덱스 스캔 |
index_desc | 내림차순으로 인덱스 스캔 |
and_equals | 여러 개의 인덱스를 merge하여 사용 |
ordered | from 절에 기술된 테이블 순으로 조인 |
USE_NL | 먼저 특정 테이블의 행을 엑세스하고 그 값에 해당하는 다른 테이블의 행을 찾는 작업을 해당 범위까지 실행하는 조인 |
USE_MERGE | 먼저 각각의 테이블의 처리 범위를 스캔하여 정렬한 후 서로 병합하면서 조인하는 방식 |
parallel | 병렬 처리 프로세스의 개수를 지정 |
cache | 테이블 행들을 메모리 내에 상주 |
nocache | 메모리 내에 상주시킨 옵션을 해제 |
merge-aj | 부정형의 조인을 sort merge방식으로 수행 |
hash-aj | 부정형의 조인을 hash join 방식으로 수행 |
'DataBase > Oracle' 카테고리의 다른 글
ANALYZE 명령어 (0) | 2008.10.06 |
---|---|
DBMS_STATS 패키지 (0) | 2008.10.06 |
일수구하는쿼리... (0) | 2008.09.30 |
시노님(SYNONYM) 이란? (0) | 2008.09.10 |
작업 진행율 (0) | 2008.08.08 |