현재 일별,월별로 회원별 수치에 대한 정보를 집계하는 테이블이 있습니다.
하루에 한번씩 job이돌면서 저장을 하구요.
데이터는 일별테이블에 하루에 1만건, 월별테이블에 한달에 10만건이 들어갑니다.
화면에 출력할때 일자를 검색조건에 두고 집계테이블에서 회원별 수치의 합을 구하고 싶은데요.
그럼 일별테이블을 스캔해야합니다.
지금 3개월치가 쌓였는데 일별테이블에 약 백만건이 들어가있습니다.
3개월치 모두 쿼리를 하면 백만건을 모두 읽은 후 회원아이디별 group by를 하는데 속도가..20초 이상걸리네요..ㄷㄷ
테이블 구조입니다.
---------------------------------------------------------------------------------------------------
년월일 | 회원아이디 | 일별포인트합계 | 일별게시물수합계 | ...
20110901 | abc | 13 | 15 | ...
pk는 년월일,회원아이디 입니다.
---------------------------------------------------------------------------------------------------
쿼리는
select 회원아이디, sum(수치1), sum(수치2), sum(수치3) ...
from 집계테이블
where 년월일 between '20110901' and '20111031'
group by 회원아이디
----------------------------------------------------------------------------------------------------------
속도를 5초 안으로 당기고 싶은데요.
방법을 알려주세요 ㅠ |