쿼리 속도 문제 다시한번만 질문드릴게요.. 3 827

by um..... [2008.08.22 13:51:27]


제가 직접 짜보긴 했는데 시간이 정말 엄청 오래걸리네요.. 아래의 쿼리인데요

select a.serviceagency as "전문정보센터",b.special_infocenter_name as "전문정보센터명",count(*)as "URL변경건수" from metadata a, special_infocenter b
where to_date(updtime)=to_date(’08/08/22’,’YY/MM/DD’) and a.serviceagency= b.agency and deldate='12345678'
group by a.serviceagency, b.special_infocenter_name

그리고..

updtime 데이터 터입은 date

deldate 데이터타입은 varchar2

그리고 둘 다 인덱스 생성되어 있구요

idx_metadata_deldate_1     요게 deldate 인덱스명

idx_metadata_updtime        요게 updtime 인덱스명             이렇게 되어있습니다. 죄송합니다 한번만 더 질문할게요..

 

전체 데이터중에서 deldate='12345678'인   여기서 12345678은 서비스 되고 있는 데이터 입니다.

서비스를 내릴땐 deldate='20080822' 이런 식으로 바꿔주게 되구요..

그리고 오늘 수정데이터 건수를 알아볼때는 to_date('08/08/22','YY/MM/DD') 식으로 알아보는거구요.. 죄송합니다.

by 마농 [2008.08.22 14:15:59]
WHERE updtime >= TO_DATE('08/08/22','YY/MM/DD')
AND updtime < TO_DATE('08/08/22','YY/MM/DD') + 1

by um..... [2008.08.22 17:25:27]
오.. 마농님 감사드립니다.. 어떻게 이렇게 차이가 나는지 설명도 부탁드려도 될까요...?

by 마농 [2008.08.22 17:53:10]
deldate 인덱스는 아마도 분포도가 좋지 않아서 성능에 도움을 주지 못하는 모양입니다.
updtime 인덱스를 사용해야 하는데요 조건절에서 인덱스 해당 컬럼에 변형을 가하면 인덱스를 타지 못합니다.
조건절에서는 컬럼을 가공하지 마시고 조건값을 가공하세요.