ORACLE EXECUTION PLAN
from 실행계획으로 배우는 고성능 데이터베이스 튜닝 | 권순용 | 비팬북스
1. ORACLE EXECUTION PLAN
실행플랜의 오퍼레이션은 아래와 같이 나뉜다.
A. TABLE
i. BY INDEX ROWID
ii. FULL SCAN
iii. BY USER ROWID
iv. SAMPLE
B. INDEX
i. INDEX RANGE SCAN
ii. INDEX UNIQUE SCAN
iii. INDEX AND-EQUALS
iv. INDEX FULL SCAN
v. INDEX FAST FULL SCAN
vi. INDEX PARALLEL SCAN
vii. INDEX SKIP SCAN
viii. INDEX MIN/MAX SCAN
ix. INDEX JOIN
C. SORT
i. SORT(AGGREGATE)
ii. SORT(UNIQUE)
iii. SORT(GROUP BY)
iv. SORT(ORDER BY)
D. ORACLE OPERATOR
i. IN
ii. UNION ALL
iii. UNION
iv. MINUS
E. JOIN
i. NESTED LOOP JOIN(NL JOIN)
ii. HASH JOIN
iii. SORT MERGE JOIN
F. PARTITION
G. etc
i. VIEW
ii. STOP KEY
2. ORACLE EXECUTION PLAN 요약
A. TABLE
흔히 말하는 랜덤엑세스는 BY INDEX ROWID 를 통한 오퍼레이션을 의미한다.
BY USER ROWID 는 본래 INDEX 블록을 엑세스 해 얻어야 할 ROWID 를 USER 가
직접 부여하는 경우 나타나는 오퍼레이션이다.
SAMPLE 은 샘플링하는 것을 말한다. FROM TABLE SAMPLE(PERCENTAGE) 형태로 사용한다.
B. INDEX
INDEX 를 사용하게 되는 일반적인 경우는 WHERE 절에 조건절을 부여했을 때인데
이때 조건은 연산자에 따라 두가지 타입으로 나뉜다.
POINT CONDITION / LINE CONDITION 로 나뉘는데 대표적으로 예를 들자면 전자의
경우 ‘=’ 가 있으며 후자의 경우 ‘BETWEEN’ 이 있다.
RANGE SCAN 은 +1 스캔을 한다고 말한다. 이는 리프블록을 랜덤엑세스 한 후
이래로 인덱스 리프블록을 스캔방식으로 읽어들이는데 찾고자 하는 값이 아닌
경우까지 읽고서야 스캔을 멈추기 때문이다.
C. SORT
메모리상에서 정렬작업을 한다. 데이터베이스가 대용량화 되가면서 정렬작업은
부하가 큰 작업으로 인식되고 있다.
D. ORACLE OPERATOR
IN 을 제외한 나머지 UNION ALL, UNION, MINUS 는 집합연산자이다.
E. JOIN
F. PARTITION
파티션 테이블,인덱스와 관련된 플랜이다.
G. etc
VIEW 는 메모리 공간을 이용해 임시생성된다.
STOP KEY 는 USER 가 ROWNUM 을 이용하면 발견된다.