|
안녕하세요?
이해가 잘 되지 않은 부분이 있어 도움을 구하고자 이렇게 글을 쓰게 되었습니다.
실행계획과 실제 쿼리 수행속도에 관한 내용인데요.
실행계획에서의 Cost 비용이 적게 나온것이 실제 쿼리를 실행시킨 속도가 늦게 나오는 현상이 발생합니다.
* 테스트 정보
- Oracle 10g 사용, Orange Tool 사용하여 측정
- A Table 의 결합인덱스 : I_INDEX ( YYMM + B + C + D + ...)
실행쿼리 1
|
|
실행쿼리 2
|
|
SELECT *
FROM A
WHERE yymm BETWEEN ’200901’ AND ’200906’
AND B컬럼 = ’OK’
AND C컬럼 = ’OK’
|
|
SELECT /*+ INDEX( A I_INDEX ) */
*
FROM A
WHERE yymm BETWEEN ’200901’ AND ’200906’
AND B컬럼 = ’OK’
AND C컬럼 = ’OK’
|
실행계획 1
|
|
실행계획 2
|
|
Optimizer=ALL_ROWS
TABLE ACCESS (FULL) OF ’A’ (TABLE)
( Cost = 452K Card = 3M Bytes = 286M )
|
|
Optimizer=ALL_ROWS
TABLE ACCESS (BY INDEX ROWID) OF ’A’ (TABLE)
( Cost = 554K Card = 3M Bytes = 286M )
|
쿼리수행시간1
|
|
쿼리수행시간 2
|
|
14.78 sec
|
|
0.09 sec
|
위에서 보면 실행계획1의 비용이 실행계획2보다 적게 나타나는데도 실제 수행시간은 더 많이 걸리는 현상이 발생합니다.
어떤경우에 이런현상이 나타날수 있나요?
(참고 : 테이블 A 및 인덱스에 대해서는 최근에 Analyze 작업을 하고 테스트 하였습니다.)
|