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;
相关推荐
2301_815279522 分钟前
mysql如何配置慢查询日志记录_开启long_query_time并分析
jvm·数据库·python
InfinteJustice2 分钟前
如何在 CGO 中正确处理带 const char- 参数的 C 回调函数
jvm·数据库·python
m0_493934534 分钟前
mysql如何使用HAVING过滤分组_mysql分组后的二次筛选
jvm·数据库·python
2301_764150567 分钟前
如何在 Laravel Excel 导入时校验并阻止重复列值
jvm·数据库·python
2401_871696529 分钟前
PHP源码对主板M.2插槽数量有要求吗_扩展性规划建议【方法】
jvm·数据库·python
qq_189807039 分钟前
防止SQL注入的运维实践_实时清理数据库缓存与历史记录
jvm·数据库·python
weixin_4585801210 分钟前
MongoDB广告点击追踪如何建模_点击事件聚合与去重记录
jvm·数据库·python
justjinji10 分钟前
CSS如何实现垂直居中对齐_CSS Grid容器内的完美居中方案
jvm·数据库·python
Shorasul10 分钟前
Golang map怎么判断key存在_Golang map键值判断教程【通俗】
jvm·数据库·python
2301_8152795213 分钟前
Golang go mod tidy怎么清理依赖_Golang依赖清理教程【核心】
jvm·数据库·python