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;
相关推荐
heartbeat..几秒前
Redis 常用命令全解析:基础、进阶与场景化实战
java·数据库·redis·缓存
数据知道6 分钟前
PostgreSQL 实战:一文掌握如何优雅的进行递归查询?
大数据·数据库·postgresql
Hello.Reader10 分钟前
Flink 2.2 Docker 部署Session / Application / SQL Client 一把梭(含 Compose、插件、连接器与踩坑点)
sql·docker·flink
陌上丨11 分钟前
MySQL8.0高可用集群架构实战
数据库·mysql·架构
重生之绝世牛码22 分钟前
Linux软件安装 —— ClickHouse单节点安装(rpm安装、tar安装两种安装方式)
大数据·linux·运维·数据库·clickhouse·软件安装·clickhouse单节点
一只自律的鸡35 分钟前
【MySQL】第十一章 存储过程和存储函数
数据库·mysql
翔云12345639 分钟前
MySQL 中的 utf8 vs utf8mb4 区别
数据库·mysql
数据知道1 小时前
PostgreSQL 实战:索引的设计原则详解
数据库·postgresql
老毛肚1 小时前
Spring 6.0基于JDB手写定制自己的ROM框架
java·数据库·spring
CodeBlossom1 小时前
MySQL进阶 索引
数据库·mysql