哪个更有效?
SELECT theField
FROM theTable
GROUP BY theField
或
SELECT DISTINCT theField
FROM theTable
答案 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似乎还排序。