count(id)和count (*)
时间: 2023-12-29 09:06:26 浏览: 32
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* [MySQL的count(*) ,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 ]