쿼리 속도 문제 다시한번만 질문드릴게요.. 0 3 2,159

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 인덱스를 사용해야 하는데요 조건절에서 인덱스 해당 컬럼에 변형을 가하면 인덱스를 타지 못합니다.
조건절에서는 컬럼을 가공하지 마시고 조건값을 가공하세요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입