High Performance MySQL筆記:count

來源:互聯網
上載者:User

標籤:

在SQL中使用count()好像是非常自然的事情:

SELECT COUNT(*) FROM TABLE_NAME;

有時候確實會想過,count(*)和單獨的count(column_name)有什麼區別,會不會後者效率更好(太拿衣服。。。),不過一直沒有去追究。

Chapter 6:Query Perfomance Optimization中專門有一節講了count

count(column_name):只會計算該column上非NULL的行數,這個行為和其他聚集合函式一樣(SUM會忽略NULL的行)

count(*):就是統計行數

 

其實count()裡面是可以放入運算式的(或者說上述兩種情況就是兩類特殊的運算式):

SELECT COUNT(COLUMN_NAME IS NOT NULL) FROM TABLE_NAME;

此時count得到的就是該列上為null的行數了,再如一個文中的例子:

SELECT COUNT(color = ‘blue‘ OR NULL) AS blue, COUNT(color = ‘red‘ OR NULL) AS red FROM items;

 

文中也對MyISAM引擎對count執行速度進行瞭解釋:

因為MyISAM引擎內部儲存了表的確切行數,所以當count(*)時不帶有其他的可以篩選行的條件,就直接使用引擎提供的數值了

 

High Performance MySQL筆記: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.