哪个更好:区别或分组依据

时间:2008-12-17 15:47:55

标签: sql sql-server

哪个更有效?

SELECT  theField
FROM    theTable
GROUP BY theField

SELECT  DISTINCT theField
FROM    theTable

6 个答案:

答案 0 :(得分:29)

在您的示例中,两个查询都将生成相同的执行计划,因此它们的性能将相同。

然而,他们都有自己的目的。为了使您的代码更易于理解,您应该使用distinct来消除重复行并将其分组到应用聚合运算符(sum,count,max,...)。 / p>

答案 1 :(得分:10)

无所谓,它会产生相同的执行计划。 (至少对于这些查询)。通过使查询分析器或SSMS能够在运行查询后显示执行计划和服务器跟踪统计信息,这些问题很容易解决。

答案 2 :(得分:6)

在大多数情况下,DISTINCT和GROUP BY生成相同的计划,其性能通常相同

答案 3 :(得分:5)

您可以查看执行计划以查找此对帐单的总费用。答案可能因情况而异。

答案 4 :(得分:2)

嗯......据我在执行计划中看到的,为了运行类似的查询,它们是相同的。

答案 5 :(得分:0)

在MySQL中,如果未对索引进行索引,则DISTINCT似乎比GROUP BY快一点。仅限DISTINCT 消除重复行,但GROUP BY似乎还排序