全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

执行count(1)、count(*) 与 count(列名) 到底有什么区别?

发布时间:2023-10-14 21:31:35
发布人:xqq

一、语义不同

count(1):表示统计查询结果的行数,不考虑表中的任何列的值,只关心是否存在行。count(*):表示统计查询结果的行数,与count(1)类似,不考虑表中的任何列的值,只关心是否存在行。count(列名):表示统计指定列的非空值的数量,只统计指定列中不为NULL的行。

二、性能差异

count(1)和count(*):这两种写法在大多数数据库系统中的性能是相同的,因为它们都不关心具体的列值,只关心行的存在与否。count(列名):这种写法在某些数据库系统中可能会比count(1)和count(*)性能稍差,因为它需要检查指定列的值是否为NULL,并排除NULL值的行。

三、对空值的处理不同

count(1)和count(*):不关心表中的具体列值,因此不受空值影响,会将包含NULL值的行也计算在内。count(列名):只统计指定列的非空值,会排除包含NULL值的行,只计算指定列中不为NULL的行

四、使用范围不同

count(1)和count(*):适用于查询整个表或满足特定条件的行数。count(列名):适用于统计特定列的非空值数量。

五、结果集不同

count(1)和count(*):返回的结果集只有一行一列,即表示查询结果的行数。count(列名):返回的结果集只有一行一列,即表示指定列的非空值数量。

六、可读性不同

count(1):语义上不够明确,不容易理解其作用。count(*):语义明确,表示统计行数。count(列名):语义明确,表示统计指定列的非空值数量。

延伸阅读

COUNT(*)是什么

COUNT(*) 是一种数据库查询语句,用于统计某个表中的记录数或满足指定条件的记录数。它返回一个表示记录数量的整数值。使用 COUNT() 时,数据库引擎会对指定的表进行扫描,并计算符合条件的记录数量。 表示选择所有的列,而不是特定的列名。因此,COUNT(*) 将统计整个表中的记录数,无论具体的列值是什么。

#it技术干货

相关文章

虚拟内存有什么用?

虚拟内存有什么用?

2023-10-14
Go和Rust的高并发编程中,为什么要特别注意对齐?

Go和Rust的高并发编程中,为什么要特别注意对齐?

2023-10-14
基于SystemVerilog和基于verilog的验证平台有什么不同?

基于SystemVerilog和基于verilog的验证平台有什么不同?

2023-10-14
SQL子查询总结:相关子查询与非相关子查询有什么区别?

SQL子查询总结:相关子查询与非相关子查询有什么区别?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取