티스토리 뷰


 

위 그림처럼 두 개의 조건절에 모두 인덱스가 존재할 때 옵티마이저는 통계정보에 근거해 최소한의 비용이 소요되는 인덱스를 선택할 것이다. 하지만 통계정보가 실제 정보를 반영하지 못하여 옵티마이저가 잘못된 선택을 한다든지 혹은 우리가 원하는 인덱스가 아닐 때는 힌트절을 통해 명시적으로 인덱스를 지정할 수 있다.

 

추가적으로 아래와 같은 INDEX 관련 힌트절도 있다.

 

인덱스명  설명(표 만들기)

INDEX_SS  결합인덱스의 선행 컬럼 조건이 입력되지 않을 때 사용한다. (INDEX SKIP SCAN)

INDEX_FFS  인덱스만을 빠르게 전체 스캔한다. (INDEX FAST FULL SCAN)

INDEX_DESC 인덱스를 통하여 데이터를 역순으로 스캔한다.

 


위 그림을 보면 주문일자 조건절로 구간 조회를 하고 있다. 주문 테이블의 전체 건수에 비해 구간 조회 건수가 매우 적다면 인덱스를 통해 접근하는 것이 빠를 것이다.

하지만 구간 조회 범위가 크다면 Random Access 부하가 클 것이다. 이때는 인덱스를 통한 Random Access보다 테이블을 직접 Full Scan하는 것이 더 빠를 수도 있다.

 

이와 같은 경우는 대개 배치성 쿼리에서 많이 볼 수 있다.

조회 건수가 테이블 전체 건수의 1% 미만일 때 인덱스를 사용하게 하고, 1% 이상일 때 FULL SCAN 힌트절 사용을 고려한다.

 


PARALLEL 힌트절은 FULL 힌트절과 같이 사용된다. 병렬 처리를 위한 힌트절이므로 처리 성능은 매우 좋으나, 자원을 독점적으로 사용하므로 Multi User 환경에서는 주의해야 한다. 만약 수치값을 1로 주면 FULL 힌트절만 작동할 것이다. 또한 수치값을 주지 않는다면 사용 가능한 자원 모두를 사용하므로 주의해야 한다.


반응형
LIST
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함