count(*),count(1)和count(主鍵)的區別

來源:互聯網
上載者:User

標籤:

如果null參與聚集運算,則除count(*)之外其它聚集合函式都忽略null。如:

    ID     DD

     1      e

     2    null

    select  count(*) from table  --結果是2

    select  count(DD)  from table  ---結果是1

效率問題:

當表的資料量大些時,對錶作分析之後,使用count(1)還要比使用count(*)用時多了!

從執行計畫來看,count(1)和count(*)的效果是一樣的。

但是在表做過分析之後,count(1)會比count(*)的用時少些(1w以內資料量),不過差不了多少。

這個也與表的記錄數多少有關!如果1w以外的資料量,做過表分析之後,反而count(1)的用時比count(*)多了。

另外,當資料量達到10w多的時候,使用count(1)要比使用count(*)的用時稍微少點!

如果你的資料表沒有主鍵,那麼count(1)比count(*)快

如果有主鍵的話,那主鍵(聯合主鍵)作為count的條件也比count(*)要快

如果你的表只有一個欄位的話那count(*)就是最快的啦

count(*) count(1) 兩者比較。主要還是要count(1)所相對應的資料欄位。

如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。

因為count(*),自動會最佳化指定到那一個欄位。所以沒必要去count(1),用count(*),sql會幫你完成最佳化的 

因此:count(1)和count(*)基本沒有差別!


sql調優,主要是考慮降低:consistent gets和physical reads的數量。


count(*),count(1)和count(主鍵)的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.