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;
相关推荐
kura_tsuki26 分钟前
[Oracle数据库] Oracle 常用函数
数据库·oracle
YA3331 小时前
java基础(十)sql的mvcc
数据库
weixin_307779135 小时前
VS Code配置MinGW64编译SQLite3库
开发语言·数据库·c++·vscode·算法
SelectDB6 小时前
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
数据库·人工智能·数据分析
我是哈哈hh6 小时前
【MySQL】在UBuntu环境安装以及免密码登录入门
linux·数据库·mysql·ubuntu
HeyZoeHey6 小时前
Mybatis执行sql流程(一)
java·sql·mybatis
喪彪7 小时前
MySQL新手教学
数据库·mysql·adb
丘大梨9 小时前
QT 基础聊天应用项目文档
运维·数据库·系统架构
HMBBLOVEPDX9 小时前
MySQL的多版本并发控制(MVCC):
数据库·mysql·mvcc