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