select count(distinct id)
from mytbl;
select count(*)
from (select distinct id
from mytbl
) t;
两个查询,都会在map阶段count,但reduce阶段,distinct只有一个, group by 可以有多个进行并行聚合,所以group by会快。
但这个stackoverflow讨论中有人提出,当distinct后值很小时,distinct更快,因为在map完成了大部分的count。
所以,应该具体测试后决定其性能。