mysql count 性能优化,mysql count(*)优化

1.不少人认为count查询很是快,可是在加上筛选条件那就是未必的了!mysql

测试:user表中4000w数据sql

 

(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种渠道注册人数一致,数据达到百万.spa

   

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

 

   这种状况就建议创建统计表,用户注册事件发生便可+1操做.原理

相关文章
相关标签/搜索