안녕하세요
동일 쿼리이고 파라메터에 따라 다른 실행계획이 풀려서 너무너무 고민입니다. ㅠㅠ
테이블은 월별로 range 파티션 되어있는 테이블입니다.
월별로 데이터의 수는 5000만건 정도 쌓이고 있습니다. 힌트를 줘 보기도 하고 쿼리를 조금 수정해보기도 했는데
실행계획이 변경되지 않았습니다. ㅠㅠㅠㅠ
쿼리는 아주 간단합니다. 조언바랍니다. 감사합니다.
select A컬럼, :yyyymmddhh_1||'0000', count(A컬럼) cnt
from 테이블명
where B컬럼>= :yyyymmddhh_1||'0000'
AND B컬럼< :yyyymmddhh_2|'0000'
GROUP BY A컬럼;
느리게 풀리는 실행계획
Plan | ||||||||||||
SELECT STATEMENT FIRST_ROWS Cost: 39,672 Bytes: 9,785 Cardinality: 515 | ||||||||||||
2 SORT GROUP BY NOSORT Cost: 39,672 Bytes: 9,785 Cardinality: 515 | ||||||||||||
1 INDEX SKIP SCAN INDEX (UNIQUE) 테이블_PK Cost: 39,672 Bytes: 252,187 Cardinality: 13,273 |
빠르게 풀리는 실행계획
Plan | ||||||||||||||||
SELECT STATEMENT FIRST_ROWS Cost: 3 Bytes: 22 Cardinality: 1 | ||||||||||||||||
4 HASH GROUP BY Cost: 3 Bytes: 22 Cardinality: 1 | ||||||||||||||||
3 FILTER | ||||||||||||||||
2 PARTITION RANGE ITERATOR Cost: 2 Bytes: 22 Cardinality: 1 Partition #: 3 Partitions determined by Key Values | ||||||||||||||||
1 TABLE ACCESS FULL TABLE 테이블 Cost: 2 Bytes: 22 Cardinality: 1 Partition #: 3 Partitions determined by Key Values |