테이블에 데이터가 많을때 인덱스가 안걸려 있거나
인덱스가 있지만 해당 쿼리가 인덱스를 안 탈 경우 수행 속도가 매우 느릴수 있다
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 인 경우 해당 테이블에 인덱스 여부를 확인 하고 인덱스를 추가 해주면
성능이 향상 되는 것을 확인 할수 있다
'Work > altibase' 카테고리의 다른 글
Error: [0]:Divide by zero SQLState: HY000 ErrorCode: 135190 (0) | 2013.01.10 |
---|---|
altibase 테이블 간단 백업 (0) | 2012.03.15 |
compact (0) | 2012.03.06 |
[ERR-11118 : The update log size '10486760' is bigger than TRX_UPDATE_MAX_LOGSIZE '10485760'] (0) | 2011.02.15 |
소수점 자리수 출력 관련 함수 ROUND() (0) | 2010.09.08 |