SELECT COUNT( * ) 与SELECT COUNT( 1 ) 区别

在 SQL 中,SELECT COUNT(*)SELECT COUNT(1) 都用于统计符合条件的行数,但它们在具体实现和效率上有一些区别。

  1. SELECT COUNT(*):这是一种常见且通用的写法,它会统计所有符合查询条件的行数,包括所有列,不包括 NULL 值。它会对查询的每一行进行计数,这可能涉及扫描整个表或使用索引。

  2. SELECT COUNT(1):这是一种更为简洁和高效的写法。它会统计符合查询条件的行数,但实际上并不关心查询的具体列。因为我们只关心存在与否,所以使用任意常量(例如 1)代替列名即可。

在实际运行中,SELECT COUNT(1) 往往比 SELECT COUNT(*) 更高效。这是因为数据库引擎在执行查询时,并不需要获取所有列的数据,只需要判断是否存在即可。使用 SELECT COUNT(1) 可以避免读取额外的数据,从而提高查询性能。

SELECT COUNT(*) 写法可以根据某个字段非空查询

例:SELECT COUNT(column_name) FROM TABLE

当然还可以这样写

复制代码
SELECT COUNT(CASE WHEN Column1 IS NOT NULL OR Column2 IS NOT NULL THEN 1 END) AS NonNullCount
FROM YourTable;
相关推荐
Zephyr_0几秒前
SQL,MyBatis-Plus,maven,Spring与VUE3
sql·spring·vue·maven·mybatis
zhaoyong2221 分钟前
PHP 中 end() 函数如何改变数组内部指针并影响后续遍历操作
jvm·数据库·python
a7963lin3 分钟前
Tailwind CSS如何实现溢出滚动处理_利用overflow-auto添加CSS滚动条
jvm·数据库·python
刘~浪地球6 分钟前
MongoDB与Python/Node.js实战:打造现代化的数据库应用
数据库·python·mongodb
2501_901200537 分钟前
Less如何优化CSS文件大小_利用压缩配置去除冗余样式
jvm·数据库·python
YL200404267 分钟前
MySQL-进阶篇-索引
数据库·mysql
庞轩px8 分钟前
Redis工具类重构——从臃肿到优雅的门面模式实践
数据库·redis·设计模式·重构·门面模式·可扩展性·可维护性
m0_609160499 分钟前
SQL如何通过窗口函数简化年度报表逻辑_SQL开发技巧
jvm·数据库·python
m0_7335654611 分钟前
JavaScript中原型链的查找机制与终点null的意义
jvm·数据库·python
weixin_4440129312 分钟前
HTML怎么区分正文与广告_HTML aside与广告位语义【技巧】
jvm·数据库·python