mysql count 加速_mysql count 性能优化,mysql count(*)优化

1.很多人认为count查询非常快,但是在加上筛选条件那就是未必的了!

测试:user表中4000w数据

(1).SELECT  count(*)   from user;   用时0.00s

(2).SELECT  count(*)   from user  where id>1000;   用时7秒

为什么统计全部速度快,不统计全部却慢了?因为mysql默认已经统计过表中的总记录了,所以查询非常快

2.优化count案例.假设需要查询数据中user表id大于1000的数据,如何快速查询?(上面的查询用时7秒!)

select ((SELECT  count(*)   from user) -(SELECT  count(*)   from user  where id<1000));

原理:需要id大于1000的人数=总人数-id小于1000的人数(总人数mysql秒完成,id小于1000的人数记录少查询快)

3.以上的方法只是解决了部分场景,假如现在需要统计用户注册渠道呢?假设注册渠道有QQ和微信,并且2种渠道注册人数一致,数据达到百万.

那么 SELECT  count(*)   from user  where way='qq';和 SELECT  count(*)   from user  where way<>'qq' 无区别.

这种情况就建议建立统计表,用户注册事件发生即可+1操作.

你可能感兴趣的:(mysql,count,加速)