为了账号安全,请及时绑定邮箱和手机立即绑定

count(*)vs count(列名)-哪个更正确?

count(*)vs count(列名)-哪个更正确?

浮云间 2019-11-27 10:57:56
count(*)与count(column-name)这两个示例相比,这样做是否有所不同?我倾向于总是写,count(*)因为如果可行,它似乎更适合我的想法,因为它是一个聚合函数。但是我不确定这在技术上是否最好,因为我倾向于看到示例代码编写时*经常没有。计数(*):select customerid, count(*), sum(price) from items_orderedgroup by customeridhaving count(*) > 1;vs. count(列名):SELECT customerid, count(customerid), sum(price)FROM items_orderedGROUP BY customeridHAVING count(customerid) > 1;
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

  • COUNT(*) 计算所有行

  • COUNT(column) 仅计算非NULL

  • COUNT(1)等同于COUNT(*)因为1是非空表达式

您在使用COUNT(*)COUNT(column)应根据所需的输出


查看完整回答
反对 回复 2019-11-27
?
冉冉说

TA贡献1877条经验 获得超1个赞

这适用于MySQL。我不确定其他人。

区别在于:

  • COUNT(*) 将计算记录数。

  • COUNT(column_name) 将计算column_name不为null的记录数。

因此,这COUNT(*)是您应该使用的。如果您使用的是MyISAM,并且没有WHERE子句,那么优化器甚至不必查看表,因为已经缓存了行数。


查看完整回答
反对 回复 2019-11-27
?
湖上湖

TA贡献2003条经验 获得超2个赞

当它是一个标识符(并保证为非标识符NULL)时,这可能并不重要。

但是,有之间的差异COUNT(*),并COUNT(column)在一般情况下,这COUNT(column)将返回非计数NULL列中的值。还有一种COUNT(DISTINCT column)变体,可返回唯一的非NULL值的数量。


查看完整回答
反对 回复 2019-11-27
  • 3 回答
  • 0 关注
  • 631 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信