COUNT(字段)、COUNT(常量)和COUNT(*)之间的区别?

COUNT(字段)、COUNT(常量)和COUNT(*)之间的区别:

  • COUNT(常量) 和 COUNT(*) 表示的是直接查询符合条件的数据库表的行数。

  • COUNT(列名)表示的是查询符合条件的列的值不为NULL的行数。

特别说明:
MySQL官方文档是这么说的:
InnoDB handles SELECT COUNT(*) and SELECT COUNT(1) operations in the same way. There is no performance difference.
所以,对于count(1)和count(*),MySQL的优化是完全一样的,根本不存在谁更快。但依旧建议使用count(*),因为这是SQL92定义的标准统计行数的语法,《阿里巴巴Java开发手册》里也是建议使用COUNT(*)。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
count(id)和count(*)之间区别在于统计的对象不同。 count(id)是统计指定列(id列)非空的行数,只计算非空值的数量。 count(*)是统计所有行的数量,包括空值和非空值。 在实际使用中,count(id)会排除掉id列为空的行,而count(*)会将所有行都计算在内。因此,count(id)的结果可能会小于count(*)的结果。 在性能方面,count(id)只需要统计指定列的非空值,相对来说会比count(*)更快一些。但是差别很小,因为count(*)会自动优化指定到那一个字段,所以在大多数情况下,使用count(*)和count(id)的效率差异可以忽略不计。 在《阿里巴巴Java开发手册》中强制要求不使用COUNT(列名)或COUNT(常量)来替代COUNT(*)的原因是为了避免出现误解和潜在的问题。使用COUNT(*)可以更清晰地表达统计所有行的意图,并且在某些数据库中,COUNT(*)的性能可能更好。 #### 引用[.reference_title] - *1* [SQL-count(*)和count(id)有啥区别](https://blog.csdn.net/weixin_45910779/article/details/113805370)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [count(1)、count(*)和count(指定字段)之间区别](https://blog.csdn.net/qq_21103471/article/details/124706159)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MySQLcount(*) ,count(1),count(id)的区别](https://blog.csdn.net/weixin_50966947/article/details/126769434)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值