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

mysql count 和 count 以及 count,有什么区别吗

mysql count 和 count 以及 count,有什么区别吗

摇曳的蔷薇 2019-03-27 18:17:50
mysql count 和 count 以及 count,有什么区别吗
查看完整描述

2 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

count(*)对行的数目进行计算,包含NULL
count(column)对特定的列的值具有的行数进行计算,不包含NULL值。
count()还有一种使用方式,count(1)这个用法和count(*)的结果是一样的。

性能问题

1.任何情况下SELECT COUNT(*) FROM tablename是最优选择;
2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = ‘value’ 这种查询;
3.杜绝SELECT COUNT(COL) FROM tablename WHERE COL2 = ‘value’ 的出现。

如果表没有主键,那么count(1)比count(*)快。
如果有主键,那么count(主键,联合主键)比count(*)快。
如果表只有一个字段,count(*)最快。
count(1)跟count(主键)一样,只扫描主键。count(*)跟count(非主键)一样,扫描整个表。明显前者更快一些。

查看完整回答
反对 回复 2019-03-30
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

count函数的作用
想要真正的理解count函数,我们就必须明白count函数的作用。
作用一:统计某一列非空(not null)值得数量,即统计某列有值得结果数,使用count(col)。
作用二:统计结果集的行数,此时不用管某列是否为null值。即使用count(*).
明白了这点,我们就应该知道MySQL的count(*)并不是想象中的那样,统计每一列的值,而是直接忽视掉所有列,直接统计行数,那么它的效率肯定是很高的。
但是有一点,当col指定了该字段为NOT NULL时实际上,MySQL会自动将count(col)转为count(*),但是这样也同样耗费了些时间,如果col没有指定为NOT NULL的话,那么效率就更低了,MySQL就必须要判断每一行的值是否为空。
所以综上所述,最好优先使用select count(*)
当统计某一列等于多少的值得时候可以使用下面两种方法。
#统计出表中id为23的值的数量的两种方法
SELECT SUM(IF(id = 23,1,0)) FROM table
SELECT COUNT(id = 23 OR NULL) FROM table

查看完整回答
反对 回复 2019-03-30
  • 2 回答
  • 0 关注
  • 555 浏览
慕课专栏
更多

添加回答

举报

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