shop-wiz logo
Follow Us on Facebook Follow Us on Google+ Follow Us on Twitter Follow Us on LinkedIn
제목 group by max 속도 올리기
등록일 2016.06.27 HIT 4938 작성자 폰돌
백만건 이상되는 데이타에 대해 groub by를 실행하면 속도가 상당히 떨어진다.

select 
    max(win)
from 
    table
group by user_id

 INDEX `mb_id_group` (`user_id`, `win`) USING BTREE

이경우 일반적으로 index를 잡게 되는데 index를 잡는 방식에 따라 안되는 경우가 있다

반드시 지켜야 할 것은 groupby 에걸리는 필드가 먼저오고 그다음에 max에 오는 필드가 와야 한다.

만약 where가 존재하면 where에 걸리는 키를 각각 하나씩 입력한후
전체 필드에서도 where가 먼저 오도록 걸어 주어야 한다.

select 
    max(win)
from 
    table
where field1 = 'aa'
group by user_id

 INDEX `mb_id_group` ('field1 ',`user_id`, `win`) USING BTREE

그렇지 않으면 index가 제대로 걸리지 않는다. 기타 선택필드가 있다면 이후로 계속 나열하면 된다.

상세한 내용은 
http://stackoverflow.com/questions/21439342/improving-speed-of-sql-query-with-max-where-and-group-by-on-three-different-co

참조하시기 바랍니다.
댓글보기
등록된 댓글이 없습니다.

Powered by shop-wiz since 2002, e-mail:wangta69@naver.com