시간이 걸려도 너~~무 오래 걸려서요..;;
테이블 필드가 3개가 있습니다.
아 그림으로 설명 하자면..
테이블명 : statTable
id | date | count |
aa | 2015-01-01 18:31:38 | 4 |
위와같은 테이블 입니다.
저 아이디별 카운트가 가장 높은순으로 TOP5를 뽑습니다.
기본쿼리
SELECT id,sum(count) as cnt FROM statTable
WHERE date between '2015-01-01 12:00:00' AND '2015-02-01 12:00:00'
GROUP BY id ORDER BY cnt DESC LIMIT 0,5
요렇게 뽑는데... 음..;;
저게 row가 굉장히 많습니다..
뭐 많을때는 한달 기간에 천만건 정도 있을때도..있고..;; 몇백만건도 있고..
저 쿼리는 끝입니다.. 시간이 말이 안되거든요..;;
당최 튜닝을 어찌해야 할지...ㅜㅜ;;
고수님들의 조언 부탁 드립니다.
Comment 5
-
이리
2016.05.19 17:15
-
추억만이
2016.05.19 18:15
date 에 ck 요 -
추억만이
2016.05.19 18:32
추가로 id 와 cnt에 커버링 인데끄도 해야겠지만 집계성은 한계가있죠
이리님이 말한 방법이 가장 효율적이고 , 물리적인 디스크기 분리되어있다명 파일그룹이로 인덱스 분리하고 엔터프리이즈라면 테이블파티셔닝도 고려해야겠네요 -
minsouk
2016.05.19 18:43
데이터를 좀 봐야 컨설팅이 가능할 듯 합니다.
그냥 보기는 스키마 바인딩 인덱스드 뷰가 가장 효율적으로 보이긴 한데요,
후보는 (일반 인덱스, 컬럼 스토어 인덱스, 람다 아키텍처, 파티션 테이블 등)의 후보가 있겠네요~
데이터의 CRUD 패턴과 데이터 퍼지 패턴 등을 보고 튜닝 하는게 좋아 보입니다.0초 나오게 가능해요 ~ 화이팅~ -
S.GERRARD
2016.05.20 13:33
모두 감사합니다.
위에서 제시해주신 방법으로 한번 해보겠습니다~!!
감사합니다~~!!!
새벽 시간 같을때 일별 혹은 월별 집계 테이블을 만들어서 활용해 보시는건 어떨까요