区别和分组依据 - 查询性能

时间:2014-05-05 09:43:21

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

查询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 tabel中,ord_no是varchar类型并且有重复。这是一个带有标识列的复合键。

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

2 个答案:

答案 0 :(得分:2)

您可以在SQL事件探查器上查看每个查询以毫秒为单位的时间。从管理工作室,转到工具 - > Profiler并在您的数据库上启动跟踪。运行您的查询。你可以看到他们的持续时间。请注意,您需要拥有大量数据才能看到差异。 如果您没有使用SQL的完整版本,则可以使用SQL Express Profiler。

答案 1 :(得分:0)

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

如果执行计划相同,那么两者之间的绩效差异(统计上显着)。

话虽如此,只要有疑问,请使用group by代替distinct