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操做.原理

相關文章
相關標籤/搜索