오라클 실무..
실행계획 읽기
감식자
2006. 5. 18. 10:01
쿼리
위의 쿼리에 대해 실행계획이 다음과 같이 나왔다
그럼 이를 어떻게 읽는 것인가? ㅡ.ㅡ?
ID | P_ID | Operation | Ojbect name |
0 | SELECT STATEMENT | ||
1 | 0 | FILTER | |
2 | 1 | NESTED LOOPS | |
3 | 2 | TABLE ACCESS FULL | EMP |
4 | 2 | TABLE ACCESS BY ROWID | DEPT |
5 | 4 | INDEX UNIQUE SCAN | PK_DEPT |
6 | 1 | TABLE ACCESS FULL | SALGRADE |
ID와 P_ID를 유심히 살펴보자
먼가 상관성 있어 보인다
즉 P_ID는 부모의 ID로 아래와 같이 트리 구조를 만들어 볼 수 있다
트리를 만들어 보니 읽기가 편하다!
가장 먼저 실행되는부분이 가장 아래에 있는ID가 5번인 INDEX UNIQUE SCAN 부분이다
즉 ID 5~ 4 단계는 DEPT테이블의 PK INDEx인 PK_DEPT 를 SCAN하여 얻은 ROWID로 DEPT 테이블을 ACCESS 한다는 말이다
3번의 EMP 테이블의 ACCESS 방법은 Table Full Scan으로 읽어 4번과 Nested Loop 조인 하는 형식을 말한다
다시Nested Loop 된 결과(2번)는 Full Table Scan으로 읽은 SALGRADE 테이블에 의해 Filter 되어 결과가 나오게 된다
쉽죵?