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;
相关推荐
shizhan_cloud7 分钟前
MySQL 备份与恢复
数据库·mysql
思麟呀10 分钟前
MySQL的内置函数
数据库·mysql
Mike117.13 分钟前
GBase 8a 慢任务处理时 KILL 和 PROCESSLIST 的使用边界
大数据·数据库
sun032215 分钟前
介绍一下 Oracle中的 ROWNUM 和 ROW_NUMBER OVER
数据库·oracle
六月雨滴19 分钟前
Oracle 数据库实例启动与关闭
数据库·oracle·dba
NineData21 分钟前
还在轮询 MySQL 吗?用 NineData 把业务变更直接送进 Kafka
数据库·mysql·kafka·ninedata·数据复制·玖章算术·数据迁移工具
gQ85v10Db22 分钟前
Redis分布式锁进阶第三十二篇
数据库·redis·分布式
Dovis(誓平步青云)24 分钟前
《SQL语义等价性检查:Pivot的CASE WHEN改写策略与限制》
linux·windows·sql·microsoft·oracle·stable diffusion
wmm_会飞的@鱼27 分钟前
FlexSim-基于SLP方法的A汽车企业总装车间布局优化
前端·数据结构·数据库·python·数学建模·汽车
北秋,31 分钟前
Web Security Academy 第三关:SQL 注入查询 Oracle 数据库版本
数据库·sql·oracle