【SQL】count(1)、count() 与 count(列名) 的区别

在 SQL 中,COUNT 函数用于计算查询结果集中的行数。COUNT(1)COUNT(*)COUNT(列名) 都可以用来统计行数,但它们在实现细节和使用场景上有一些区别。以下是详细的解释:

1. COUNT(1)
  • 定义: COUNT(1) 计算查询结果集中的行数。

  • 实现: 在执行过程中,COUNT(1) 会将 1 作为一个非空的常量值,并对每一行进行计数。

  • 效率: 现代的 SQL 优化器通常会将 COUNT(1)COUNT(*) 优化为相同的执行计划,因此性能基本相同。

  • 用途: 适用于计算总行数,与 COUNT(*) 无区别。

    SELECT COUNT(1) FROM employees;

2. COUNT(*)
  • 定义: COUNT(*) 计算查询结果集中的总行数,包括所有列,不会忽略任何行,即使某些列包含 NULL

  • 实现: SQL 优化器会对 COUNT(*) 进行优化,将其转换为统计行数的操作。

  • 效率: 通常是最常用和推荐的方式,因为其语义明确且优化器能够很好地处理。

  • 用途: 适用于计算总行数,性能通常优于 COUNT(列名)

    SELECT COUNT(*) FROM employees;

3. COUNT(列名)
  • 定义: COUNT(列名) 计算查询结果集中某一列非 NULL 值的行数。

  • 实现: 只有当指定列的值不为 NULL 时,该行才会被计入结果。

  • 效率: 由于需要检查每行中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值