쓸만한 주저리

group by와 distinct를 같이 쓸 때 속도 향상법

봄돌73 2010. 11. 25. 15:23

select

name,

count(distinct ip) visitcount

from member

group by name


위와 같은 query에서 group by와 distinct가 동시에 일어난다.

이렇게 썼을 때 32초 걸리던 query가 27초 걸리도록 줄일 수 있었다.

(DB에서 1초를 넘어 섰다는 건 이미 문제가 있는 거지만 통계 페이지라 일단 통과)


select

name,

count(*) visitcount

from (

select distinct

name,

ip

from member

) a

group by name


distinct를 먼저 한 후에 group by를 했을 때 약간 더 빨랐다.

15~6% 정도...

mssql에서 index 다 태운 상황이었다. (최소한 분석기에서 index 없다는 얘기는 없을 정도)