【问题标题】:When to use Count(*) and Count(1) in Sql Server 2008 [duplicate]何时在 Sql Server 2008 中使用 Count(*) 和 Count(1) [重复]
【发布时间】:2013-01-28 14:28:32
【问题描述】:
我想知道查询优化的 Count(*) 和 Count(1) 有什么区别。在研究它时,我遇到了Ask Tom,它代表oracle,并指出两者在执行时间方面是相同的。
- 是否也适用于
SQL Server 2008?
- 如果是,那么为什么有两个相同的 diff 函数?
- 如果没有,使用哪个来进行更好的优化?
- 在哪些情况下我们应该使用 Count(*) 而不是 Count(1),反之亦然
【问题讨论】:
标签:
sql-server
sql-server-2008
count
query-optimization
【解决方案1】:
COUNT (*) 与COUNT(1) 相同。实际情况是,“*” 实际上是默认选项,不需要指定。Count(*) 包括所有非 NULL 值。如果在 COUNT 函数中使用列名或任何常量。它会给你非空值
【解决方案2】:
应该是一样的。根据 COUNT "COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )" 的定义,所以 1 被视为非空表达式。