何时在Sql Server 2008中使用Count(*)和Count(1)

11 浏览
0 Comments

何时在Sql Server 2008中使用Count(*)和Count(1)

这个问题已经在这里有答案了:

Count(*) vs Count(1) - SQL Server

我想知道在查询优化中,Count(*)Count(1)有什么区别。在研究中,我看到了针对oracleAsk Tom,它指出两者在执行时间方面是相同的。

  1. 它是否也适用于SQL Server 2008
  2. 如果是,为什么会有两个不同的函数呢?
  3. 如果不是,应该使用哪一个才能实现更好的优化?
  4. 是否存在某些情况下,应该使用Count(*)而非Count(1),反之亦然?
admin 更改状态以发布 2023年5月21日
0
0 Comments

应该是一样的。根据 COUNT 的定义 "COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )" ,所以 1 被视为非空表达式。

0
0 Comments

COUNT(*)COUNT(1) 是相同的。事实上,“*” 实际上是默认选项,不需要指定。Count(*) 包括所有非空值。如果在 COUNT 函数中使用列名或任何常量,则会给出非空值。

0