码迷,mamicode.com
首页 > 数据库 > 详细

High Performance MySQL笔记:count

时间:2015-01-15 17:42:31      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

在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

标签:

原文地址:http://www.cnblogs.com/lailailai/p/4226737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!