본문 바로가기

DataBase/Oracle

HINT관련설명

HINT

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