2. DBMS이야기/01. PostgreSQL

PostgreSQL (PPAS) PLAN 및 실행계획 보기 [1]

알 수 없는 사용자 2014. 4. 22. 10:47

PostgreSQL (PPAS)에서 SQL의 PLAN (실행계획) 확인 방법중 하나를 소개 합니다.
테스를 위해 아래와 같은 절차로 테스트 진행하였습니다.


1. 테스트를 위한 테이블 생성
   create table zz_test001
   (
       a varchar(5),
       b varchar(10)
   );

   create table zz_test002
   (
       c varchar(5),
       a varchar(5),
       b varchar(10)
   );

2. 테스트를 위한 인덱스 생성 (필요시)
   create index zz_IDX_001
   on zz_test001
   (
       a
   );

   create index zz_IDX_003
   on zz_test001
   (
       b
   );

   create index zz_IDX_002
   on zz_test002
   (
       a
   );

3. SQL PLAN 정보 보기 (실행계획 확인)
   prepare temp_plan as
   select *
   from   zz_test001 a, zz_test002 b
   where  a.a='00001'
   and    a.a = b.a;

   explain execute temp_plan;

4. SQL PLAN 결과
   01 : Nested Loop  (cost=4.32..13.18 rows=27 width=40)
   02 :   ->  Bitmap Heap Scan on zz_test002 b  (cost=4.32..8.43 rows=9 width=23)
   03 :         Recheck Cond: ((a)::text = '00001'::text)
   04 :         ->  Bitmap Index Scan on zz_idx_002  (cost=0.00..4.32 rows=9 width=0)
   05 :               Index Cond: ((a)::text = '00001'::text)
   06 :   ->  Materialize  (cost=0.00..4.42 rows=3 width=17)
   07 :         ->  Seq Scan on zz_test001 a  (cost=0.00..4.40 rows=3 width=17)
   08 :               Filter: ((a)::text = '00001'::text)

   => PLAN 읽는 순서 :  05 -> 04 -> 03 -> 02 -> 08 -> 07 -> 07 -> 01
      cost=4.32..13.18 => 수행 비용 범위
      rows=27          => 단계별 Fetch 건수
      width=40         => 단계별 Column 자리수 + Column 갯수
by, 박용훈