'Index'에 해당되는 글 1건

  1. 2008.03.25 sql index 의 이용

sql index 의 이용

프로그래밍 2008. 3. 25. 19:36 |

조인방식이 HASH JOIN -> NESTED LOOP JOIN으로
데이타 엑섹스 경로는 FULL SCAN -> INDEX (RANGE SCAN) 으로 변경


튜닝전 Execution Plan (인덱스 생성 전 )
--------------------------------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=92 Card=1 Bytes=105)
   1    0   SORT (GROUP BY) (Cost=92 Card=1 Bytes=105)
   2    1     VIEW (Cost=86 Card=1 Bytes=105)
   3    2       SORT (GROUP BY) (Cost=86 Card=1 Bytes=183)
   4    3         HASH JOIN (Cost=79 Card=1 Bytes=183)
   5    4           HASH JOIN (Cost=76 Card=1 Bytes=115)
   6    5             TABLE ACCESS (BY INDEX ROWID) OF 'table a' (Cost=1 Card=1 Bytes=65)
   7    6               INDEX (SKIP SCAN) OF 'table a' (UNIQUE) (Card=1)
   8    5             TABLE ACCESS (FULL) OF 'table b' (Cost=74 Card=1 Bytes=50)
   9    4           TABLE ACCESS (FULL) OF 'table c' (Cost=2 Card=1 Bytes=68)
   
  
CREATE INDEX [user 계정].[생성 INDEX명] ON [user 계정].[table b]([column x], [column y])
TABLESPACE [table space명];


튜닝후 Execution Plan (인덱스 생성 후 )
--------------------------------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=19 Card=1 Bytes=105)
   1    0   SORT (GROUP BY) (Cost=19 Card=1 Bytes=105)
   2    1     VIEW (Cost=13 Card=1 Bytes=105)
   3    2       SORT (GROUP BY) (Cost=13 Card=1 Bytes=183)
   4    3         HASH JOIN (Cost=6 Card=1 Bytes=183)
   5    4           TABLE ACCESS (BY INDEX ROWID) OF 'table b' (Cost=2 Card=1 Bytes=50)
   6    5             NESTED LOOPS (Cost=3 Card=1 Bytes=115)
   7    6               TABLE ACCESS (BY INDEX ROWID) OF 'table a' (Cost=1 Card=1 Bytes=65)
   8    7                 INDEX (SKIP SCAN) OF 'PK_table a' (UNIQUE) (Card=1)
   9    6               INDEX (RANGE SCAN) OF '[생성 INDEX명]' (NON-UNIQUE) (Cost=1 Card=1)
  10    4           TABLE ACCESS (FULL) OF 'table c' (Cost=2 Card=1 Bytes=68)


무려 92에서 19로의 드라마틱한 퍼포먼스 향상.
이런 엄청난 차이라니. 공부해서 남주나요.

Posted by g11000011
: