【问题标题】: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,并指出两者在执行时间方面是相同的。

  1. 是否也适用于SQL Server 2008
  2. 如果是,那么为什么有两个相同的 diff 函数?
  3. 如果没有,使用哪个来进行更好的优化?
  4. 在哪些情况下我们应该使用 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 被视为非空表达式。

      【讨论】:

        猜你喜欢
        • 2011-10-30
        • 2016-12-02
        • 1970-01-01
        • 1970-01-01
        • 2015-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多