실행계획(Execution plan) 분석하는 방법.



프로시저와 같은 디비 쿼리를 짜다보면 성능에 대한 의문이 듭니다.

이때 간단하게 확인해 볼 수 있는방법이 실행계획을 통한 확인입니다.



1. 예시 쿼리


SELECT *

FROM emp t1, dept t2

WHERE t1.dept_no = t2.dept_+no

AND not exists

       ( SELECT *

          FROM salgrade

          WHERE sal BETWEEN 1000 AND 2000)



2. 예시쿼리에 따른 실행 계획

 IDP_IDOperation 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



3. 실행 계획 분석.

A. 가장 먼저 실행되는부분이 가장 아래에 있는 ID가 5번인 INDEX UNIQUE SCAN 부분.

B. ID 5~ 4 단계는 DEPT테이블의 PK INDEx인 PK_DEPT 를 SCAN하여 얻은 ROWID로 DEPT 테이블을 ACCESS 한다.

C. 3번의 EMP 테이블의 ACCESS 방법은 Table Full Scan으로 읽어 4번과 Nested Loop 조인 하는 형식.

D. 다시 Nested Loop 된 결과는 Full Table Scan으로 읽은 SALGRADE 테이블에 의해 Filter 되어 결과가 나오게 된다.



4. 트리 구조로 확인하기.



5. 분석


A. Cost는 낮을수록 좋다.

B. Full Table Scan이 없을수록 좋다.




출처: http://www.jakartaproject.com/board-read.do?boardId=dbtip&boardNo=114193419425900&command=READ&t=1411017575107 


반응형

'Programming > Databse' 카테고리의 다른 글

[PostgreSql] Centos7에서 PostgreSql 설치  (0) 2017.06.15
[PostgreSql] 윈도우서버에서 PostgreSql 외부 접속 허용  (0) 2017.06.14
[Oracle] 대소문자 변환  (0) 2017.03.07
[Oracle] ORA-02292  (0) 2017.03.07
[Oracle] UPDATE  (0) 2017.02.17

+ Recent posts