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

wcm*_*wcm 13 sql sql-server

哪个更有效率?

SELECT  theField
FROM    theTable
GROUP BY theField
Run Code Online (Sandbox Code Playgroud)

要么

SELECT  DISTINCT theField
FROM    theTable
Run Code Online (Sandbox Code Playgroud)

dub*_*dub 29

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

但是,它们都有自己的目的.为了使代码更易于理解,您应该使用distinct来消除重复的行,并使用group by来应用聚合运算符(sum,count,max,...).

  • 我想补充说,添加不同的willy nilly删除重复的行可能是个坏主意,特别是如果它使用伪装交叉连接或缺少where子句中的项目.不同的将是我删除行的最后选择. (5认同)

Fra*_*uma 10

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


Gre*_*ean 6

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


Ken*_*Yao 5

您可以查看执行计划以查找此语句的总成本.答案可能因情况而异.