分享:查询优化案例一
场景:统计独立用户数,一个不同的UserKey算一个用户
数据表:VisitLog110101,行数3000万左右
字段:
ID int 主键
URL varchar(500)
UserKey varchar(36) --类似GUID字符串 --有索引
VisitDate Datetime
方案一:
select Count(Distinct UserKey) FROM VisitLog110101耗时近4分
SELECT count(distinct HashBytes ('md5',upper(UserKey))) FROM VisitLog110101select UV=Count(UV)from (select UV=1FROM VisitLog110101group by UserKey) a
select count(*)FROM VisitLog110101group by UserKey
[解决办法]
唉,都没涉及到那么多数据的查询
[解决办法]
如果UserKey上有索引,
直接count(*)应该很快.
[解决办法]
select count(*) from (select distinct UserKey FROM VisitLog110101) a
[解决办法]
UserKey字段是否真的唯一, 即没有重复值的?
如果是, 可以把索引修改为唯一索引(unique index),
这样distinct就很快了.