【问题标题】:Distinct and Group By - query performanceDistinct 和 Group By - 查询性能
【发布时间】:2014-06-21 13:44:52
【问题描述】:

查询 A

SELECT Distinct ord_no FROM Orders 
ORDER BY ord_no

查询 B

SELECT ord_no FROM Orders 
GROUP BY ord_no
ORDER BY ord_no

在 Orders 表中,ord_no 是 varchar 类型并且有重复。这是一个带有标识列的复合键。

  1. 我可以知道哪个查询更好吗?
  2. 我们如何使用 MS SQL Server 2008 R2 检查查询性能 (速成版)?

【问题讨论】:

标签: sql-server sql-server-2008-r2 group-by distinct query-performance


【解决方案1】:

您可以在 SQL 分析器上查看每个查询所花费的时间(以毫秒为单位)。在 management studio 中,转到 Tools --> Profiler 并在您的数据库上开始跟踪。运行您的查询。你可以看到他们花费的时间。请注意,您需要拥有大量数据才能看到差异。 如果您没有使用完整版的 SQL,则可以使用 SQL Express Profiler。

【讨论】:

    【解决方案2】:

    检查两个查询的执行计划。它们很可能是相同的,尤其是对于这样一个简单的查询(在这两种情况下,您可能会看到一个 stream aggregate 运算符进行分组)。

    如果执行计划相同,则两者之间的性能没有(统计上显着的)差异。

    话虽如此,如有疑问,请使用group by 而不是distinct。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      相关资源
      最近更新 更多