mysql 查詢優化 ~ select count 知多少


一 簡介:今天咱們來聊聊mysql的查詢總數

二 具體介紹

     1 從引擎層面說

      myisam  myisam的掃描總行數是非常快的,這是因為myisam會將表的總行數存儲起來,定期維護,但是注意,一旦加入where條件,這個優勢就會消失 

      innodb   innodb 的掃描總行數隨着數據量的增大越來越慢,innodb自身因為MVCC機制,不同事務讀取的總行數可能不同,所以維護一個單獨的總行數沒有什么意義

    2 從查詢方式說起

      1 select  count(*)   2 select count(primary)  3 select count(非paimary) 4 select count(1)

       分析思路

        1 要考慮 值是否是NULL 2 要考慮從B+樹讀取記錄 3 統計字段的大小

       執行效率  1=4 > 2 > 3

 三 總結

       1盡量選擇 select count(*) ,因為count(*)做過優化,並不取值和進行NULL判斷,更不必考慮統計字段的大小

       2 對於select count(*)的explain,如果輔助索引很小,會按照輔助索引走,如果大,就按照主鍵來走了,基於成本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM