1.실행계획이란
:사용자가 SQL 문장을 실행하여 데이터를 추출할 때 옵티마이저가 수립하는 작업절차다. 한 문장으로 요약하자면, 실행계획은 SQL문이 어떻게 실행될지 알려주는 ‘설명서’다.
2.실행계획 실행하기
:쿼리문의 실행계획을 확인하는 방법은 EXPLAIN PLAIN, AUTOTRACE, SQL TRACE 3가지 방법이있다. 이중 AUTOTRACE를 가장 많이 쓰고 그 사용법에 대해서는 아래에 링크를 참조하길 바란다.
오라클 실행계획 확인하기
3.실행계획 순서
- 실행계획
실행계획은 다음과 같은 규칙으로 읽어나간다.
1.위에서 아래로 읽어 내려가면서 제일 먼저 읽어낼 문장을 찾는다.
2.내려가는 과정에서 같은 들여쓰기가 적용되면, 위->아래 순서로 읽는다.
3.읽고자 하는 문장보다 들여쓰기가 된 문장이 존재하면, 들여쓰기가 적용된 문장부터 읽는다.
- 실행순서
위의 예제에 따르면 5->4->6->->3->7->2->8->1->0 순서로 실행계획이 진행되고 읽어야 한다.
4.실행계획 해석하기
앞서 살펴본 실행계획을 해석하면 다음 그림과 같다.
5번 : PK_EMP 인덱스를 사용하여 INDEX RANGE SCAN을 하면서 조건에 만족하는 인덱스 블록과 키 값을 검색한 결과를 반환한다.
4번 : 5번에서 읽은 ROWID를 기반으로 EMP 테이블로 이동하여 조건에 부합하는 결과를 반환한다.
6번 : PK_DEPTNO 인덱스에서 INDEX UNIQUE SCAN 방식으로 검색한 결과의 ROWID를 반환합니다.
3번 : 4번과 6번에서 반환된 데이터들을 기준으로 NESTED LOOP JOIN 방식으로 4번에서 반환된 데이터의 숫자만큼 반복하여 조인한 결과를 반환합니다.
7번 : DEPT 테이블도 4번과 같이 조건에 부합하는 결과를 반환합니다.
2번 : NESTED LOOP JOIN 방식으로 3번과 같이 JOIN의 결과를 만들어줍니다.
8번 : SALGRADE 서브쿼리를 실행합니다.
1번 : 서브쿼리를 통해 해당 조건을 만족하는 데이터를 필터링하여 반환합니다.
출처
'DB > Oracle' 카테고리의 다른 글
[Oracle] 와일드카드 비교 (0) | 2022.11.30 |
---|---|
[서브쿼리] 다중열 서브쿼리/FROM절에 사용하는 서브쿼리와 WITH절 (0) | 2022.02.15 |
[서브쿼리] 다중행 서브쿼리 (0) | 2022.02.15 |
[서브쿼리] 단일행 서브쿼리 (0) | 2022.02.14 |
[서브쿼리] 서브쿼리의 정의 (0) | 2022.02.14 |