본문 바로가기
Work/altibase

altibase 실행 계획 plan 로 인덱스 타는지 확인

by 승수 2013. 11. 12.



테이블에 데이터가 많을때 인덱스가 안걸려 있거나 

인덱스가 있지만 해당 쿼리가 인덱스를 안 탈 경우 수행 속도가 매우 느릴수 있다

iSQL> alter system set trclog_detail_predicate = 1;
Alter success.
iSQL> alter session set explain plan = on;
Alter success.


툴에서는 사용 할수 없지만 서버에서 위와 같이 설정후 


쿼리를 실행 시켜 보면


쿼리 결과 값 마지막에 


SELECT * FROM T1, T2, T3

WHERE T1.I1 = T2.I1 AND T2.I1 = T3.I1

질의의 실행 계획이 다음과 같은 경우

[EXECUTION PLAN]

6--------- PROJECT ( COLUMN_COUNT: 9, TUPLE_SIZE: 36 )

5--------- JOIN ( REF_ID: 3 )

3--------- JOIN ( REF_ID: 2 )

1--------- SCAN ( TABLE: T1, FULL SCAN, ACCESS: 8, SELF_ID: 1 )

2--------- SCAN ( TABLE: T2, INDEX: IDX2, ACCESS: 104, SELF_ID: 2 )

4--------- SCAN ( TABLE: T3, INDEX: IDX3, ACCESS: 1144, SELF_ID: 3 )

최상위 노드

최하위 노드


scan 여부에 인덱스를 탈 경우 인덱스 id 값을 확인 할수 있고 인덱스를 타지 않는 경우 full scan 으로 나오는 것을 확인 할수 


있다 


full scan 인 경우 해당 테이블에 인덱스 여부를 확인 하고 인덱스를 추가 해주면 


성능이 향상 되는 것을 확인 할수 있다