다음과 같은 테이블이 있습니다.
a b c
a1 b1 c1
a1 b1 c2
a1 b1 c3
a1 b1 c4
a1 b2 c5
a1 b2 c6
a1 b2 c7
a2 b1 c8
a2 b1 c9
a2 b2 c10
a2 b2 c11
a2 b3 c12
a2 b3 c13
a2 b3 c14
자료는 현재 500만개 정도고 앞으로 수억개가 될 것 같습니다.
a에 따라 b의 unique한 게 몇 개인지 개수를 세는 쿼리를 작성했습니다.
select a, count(distinct b)
from tbl
grouby a;
이렇게 하니까 시간이 많이 걸립니다.
그래서 view를 만들었습니다.
select distinct a, b
from tbl
그리고 다음과 같이 쿼리를 실행했습니다.
select a, count(b)
from viewtbl
groub by a
좀 나아지기는 했지만 위와 같은 쿼리도 시간이 꽤 걸렸습니다.
그래서 질문이 있습니다. 몇 줄 안되는 뷰를 count 하는데 시간이 꽤 걸리는 이유가 뭘까요?
뷰에 대한 이해도가 좀 떨어지는 거 같습니다.
|