테스트 서버와 운영 서버가 있는데 테이블 스키마가 똑같습니다.
쿼리를 실행하면 테스트 서버에서는 Index Range Scan이 되는데 운영 서버에서는 Index가 실행되지 않아서 문의드립니다.
일자에 Index가 걸려 있고요. 아래 쿼리처럼 월 단위로 조회를 합니다.
SELECT * FROM 테이블
WHERE 일자 LIKE '201210%'
|
데이터는 둘 다 거의 비슷하지만 테스트 서버쪽에 데이터 양이 더 적고요. 건수는 대략 300만건정도 입니다.
운영서버에서 아래처럼 조회조건을 IN절로 만들어서 실행하면 Index Range Scan이 실행됩니다.
SELECT * FROM 테이블
WHERE 일자 IN (SELECT '201210' || LPAD(LEVEL, 2, '0')
FROM DUAL
CONNECT BY LEVEL <= TO_CHAR(LAST_DAY(TO_DATE('201210', 'YYYYMM')), 'DD'))
|
이런 경우 어떻게 원인을 찾아봐야 하는지 LIKE로 조건을 줬을 경우 해결방법이 있으면 조언 부탁드립니다. |