Execution Plan 이란?
Execution Plan
- 사용자가 실행한 sql을 어떤 방식으로 처리할 것인지에 대한 실행 계획으로 Optimizer에 의해 만들어짐.
- SQL 파싱과정을 통해 SQL에 문법적인 오류 없는지 검사
- 해당 SQL을 이전에 실행한 적이 있는지 SHARED POOL 메모리 검사. 만약 실행 기록이 있다면 그대로 실행 (
SOFT PARSING
) - 만약 실행기록이 없다면 새로 실행 계획을 세운다. (
HARD PARSING
)
접근 경로 (Access Path)
(참조 : https://docs.oracle.com/database/121/TGSQL/tgsql_optop.htm#TGSQL228)
- 실행 계획에서 Optimizer게 데이터를 읽을때 데이터를 접근하는 방식
- FULL TABLE SCAN : 테이블 전체 데이터를 읽어 조건에 맞는 데이터 추출
- ROWID SCAN : ROWID를 기준으로 데이터를 추출
- INDEX SCAN: 인덱스 사용하여 추출
무조건 TABLE SCAN 보다 INDEX SCAN이 우월한가?
- 사용용도에 따라 다름. 배치 처리를 위해 전체 데이터를 읽어들여 통계자료 생성시에는 TABLE SCAN이 유리
INDEX SCAN의 종류
- INDEX UNIQUE SCAN : 한건이하의 ROWID를 반환하는 방식
- INDEX RANGE SCAN : 한건이상의 필요한 데이터가 포함된 일정범위의 인덱스 블록을 오름차순으로 접근
- INDEX SKIP SCAN