count(*) 和 count(1)和count(列名)區別

kakaxi9521發表於2021-07-14

區別

count(*) 所有記錄

count(1) 1表示主鍵,統計主鍵列(主鍵肯定非空的)

count(列名) 統計非空列

指標: 是否統計非空 (是否用索引,用了索引肯定是包含null列的)。

總結起來,不統計null,肯定是效能差的count(列名),統計null肯定是count(1),count(*)也會被最佳化為count(1).


這一點體現了【行資料庫】對索引的重要性,以及對行約束是否Null的重要性。


所以總的來說,行式儲存DB中, 不過濾null別用count(列名),用count(1)。


count(*) 會被最佳化為索引 count(1)

不說清楚儲存引擎的原理,來談論 count(*) 和 count(1)和count(列名)的語法區別是一種“草率”的行為。

————————————————

版權宣告:本文為CSDN博主「liangdu_Zuker」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。

原文連結:https://blog.csdn.net/u010833547/article/details/109594192


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2781226/,如需轉載,請註明出處,否則將追究法律責任。

相關文章