2012년 10월 22일 월요일

실행계획 데이터베이스 튜닝 - 실행계획분석 03

INDEX SKIP SCAN과 MIN/MAX SCAN은 오라클 9i 부터 도입된 실행계획


INDEX SKIP SCAN


MIN/MAX 실행계획

최소값 최대값을 추출하기 위한 SQL
보통 조건을 만족하는 모든 집한에 엑세스하여 정렬을 수행한 후에 최대 값이나 최소 값을 추출
아니면 INDEX RANGE SCAN DESCENDING 실행 계획을 이용하여 추출

SELECT
MAX(DURATION)
FROM  CDCP_ORG_PRICE A
WHERE REVAL_DATE = '20121018'
;


SELECT STATEMENT   Cost = 1734
    SORT AGGREGATE
        TABLE ACCESS BY INDEX ROWID CDCP_ORG_PRICE
            INDEX RANGE SCAN CDCP_ORG_PRICE_PK






SELECT
/*+ INDEX_DESC(A, CDCP_ORG_PRICE_PK) */
MAX(DURATION)
FROM  CDCP_ORG_PRICE A
WHERE REVAL_DATE = '20121018'
AND ROWNUM <= 1
;



SELECT STATEMENT   Cost = 1734
    SORT AGGREGATE
        COUNT STOPKEY
            TABLE ACCESS BY INDEX ROWID CDCP_ORG_PRICE
                INDEX RANGE SCAN DESCENDING CDCP_ORG_PRICE_PK

INDEX RANGE SCAN DESCENDING 실행 계획은 인덱스 스캔에서 발생하는 실행계획
인덱스 범위 스캔을 수행하는 과정에서 인덱스의 밑에서부터 엑세스하는 실행 계획
인덱스의 밑에서부터 엑세스하므로 해당 인덱스의 첫 번째 컬럼이 최대 값이 된다.

-----------------


INDEX JOIN도 인덱스 스탠의 한 종륲다.

1+3 인덱스와 2+4 인덱스가 있을 때, 1, 2가 WHERE 절에 포함되고, 3, 4가 SELECT 절에 포함되면 테이블에 대해 랜덤 엑세스 없이 원하는 모든 값을 추출할 수 있다.

인덱스 조인은 반드시 해쉬 조인으로만 수행된다.

1+3, 4+2 인덱스가 있는 경우 WHERE절에서 1, 2 조건, SELECT 절에서 3, 4 조회일 경우 인덱스 조인으로 수행

댓글 없음:

댓글 쓰기