0%

Sql小贴士(1)-COUNT(*),COUNT(1)与COUNT(col)的性能差别

今天有在一个微信公众号上看到一个博主写的关于COUNT()和COUNT(1)之间的区别,这对于正在学习SQL的老夫来说还是挺有情趣的,不对,是兴趣。老夫在工作中也会用到COUNT()这个函数,但是还真没注意到关于COUNT()与COUNT(1)和COUNT(fielde_name)的区别,能用就行。现在看到了,自然就需要来尝试一下了。

测试环境:Windows10 专业版
测试数据库: MySQL 8.0
测试软件: DataGrip 2019.3
测试表: alibabauserbehavior

COUNT(1) 与 COUNT(*)

我们先看个比较吧,现在笔者都来查询同一张表
先看下 COUNT(*)的效果:
count_1
再看一下COUNT(1)的效果:
count_2
可以看到的是,对于这个数据量还算比较大的情况,两者的差别也不是很大。但是,这里的COUNT(1)要是一个聚索引的话,自然会是COUNT(1)快。

COUNT(1) 和 COUNT(col)

趁着查询在执行,先看下两者的区别:

COUNT(1): 会统计表中所有的字段,不关你是否为空,都要记录一次。
COUNT(col): 只会去统计当前字段不为空的记录数,也就是说不回去统计为空的记录。
count_3

COUNT(1),COUNT(*)与COUNT(col)

从执行效率上来说,COUNT(1)和COUNT(*)基本上是一致的。COUNT(col) 在 col是 key 的情况下,会比 COUNT(1)快。但如果这个 col不是 key 呢。我再去测一下。
count_4

目前老夫给你们测到的结果就是这个啊。

这是打赏的地方...

本文标题:Sql小贴士(1)-COUNT(*),COUNT(1)与COUNT(col)的性能差别

文章作者:Mr.Sun

发布时间:2019年12月09日 - 15:27:02

最后更新:2020年06月10日 - 10:01:44

原始链接:http://www.blog.sun-iot.xyz/posts/8ac975c5

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

---------Thanks for your attention---------