Select count(*)、Count(1)、Count(0)的区别和执行效率比较

简介: 结论https://www.cnblogs.com/sueris/p/6650301.html这里把上面实验的结果总结一下:count()和count(1)执行的效率是完全一样的。

结论
https://www.cnblogs.com/sueris/p/6650301.html
这里把上面实验的结果总结一下:

count()和count(1)执行的效率是完全一样的。
count(
)的执行效率比count(col)高,因此可以用count()的时候就不要去用count(col)。
count(col)的执行效率比count(distinct col)高,不过这个结论的意义不大,这两种方法也是看需要去用。
如果是对特定的列做count的话建立这个列的非聚集索引能对count有很大的帮助。
如果经常count(
)的话则可以找一个最小的col建立非聚集索引以避免全表扫描而影响整体性能。
在不加WHERE限制条件的情况下,COUNT()与COUNT(COL)基本可以认为是等价的;
但是在有WHERE限制条件的情况下,COUNT(
)会比COUNT(COL)快非常多;
count(0)=count(1)=count(*)

  1. count(指定的有效值)--执行计划都会转化为count(*)

  2. 如果指定的是列名,会判断是否有null,null不计算

当然,在建立优化count的索引之前一定要考虑新建立的索引会不会对别的查询有影响,影响有多大,要充分考虑之后再决定是否要这个索引,这是很重要的一点,不要捡了芝麻丢了西瓜。

目录
相关文章
|
4月前
count(*) 和 count(1)和count(列名)区别
count(*) 和 count(1)和count(列名)区别
202 0
|
6月前
|
数据库
count(1)、count(*)、count(column)的含义、区别、执行效率
总之,`count(1)` 和 `count(*)` 通常会更常用,因为它们的执行效率较高,不涉及对具体列值的处理。而 `count(column)` 适用于统计特定列中的非空值数量。在实际使用时,可以根据情况选择适合的方式。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
95 0
|
存储 SQL 关系型数据库
count(1)、count(具体字段)和count(*)究竟有什么区别?
count(1)、count(具体字段)和count(*)究竟有什么区别?
131 0
|
SQL 数据可视化 关系型数据库
count(列名) ,count(1)与count(*) 有何区别?
count(列名) ,count(1)与count(*) 有何区别?
|
SQL 索引
Count(1) Count(0) Count(*) Count(列名)
Count(1) Count(0) Count(*) Count(列名)
157 0
|
存储 SQL 架构师
性能大PK count(*)、count(1)和count(列)
最近的工作中,我听到组内两名研发同学在交流数据统计性能的时候,聊到了以下内容: 数据统计你怎么能用 count(*) 统计数据呢,count(*) 太慢了,要是把数据库搞垮了那不就完了么,赶紧改用 count(1),这样比较快...... 有点儿好奇,难道 count(1) 的性能真的就比 count(*) 要好吗? 印象中网上有很多的文章都有过类似问题的讨论,那 MySQL 统计数据总数 count(*) 、count(1)和count(列名) 哪个性能更优呢?今天我们就来聊一聊这个问题。
性能大PK count(*)、count(1)和count(列)
|
SQL 关系型数据库 MySQL
|
SQL 索引
count(1) and count(column)那个更优?
count(1) and count(column)那个更优?
82 0
|
存储 关系型数据库 MySQL
一文搞清楚 MySQL count(*)、count(1)、count(col) 的区别
一文搞清楚 MySQL count(*)、count(1)、count(col) 的区别
338 0
一文搞清楚 MySQL count(*)、count(1)、count(col) 的区别