使用distinct命令

时间:2011-04-12 19:42:43

标签: sql sql-server-2008

在SQL中使用distinct命令是不错的做法?是否存在明显命令的缺点?

5 个答案:

答案 0 :(得分:11)

完全取决于您的用例DISTINCT在某些情况下很有用,但可能会过度使用。

缺点主要是查询引擎上的负载增加以执行排序(因为它需要将结果集与自身进行比较以删除重复项),并且它可以用于掩盖数据中的问题 - 如果您正在获取重复项您的源数据可能存在问题。

命令本身本身并不好或坏。您可以使用螺丝刀敲钉子,但这并不意味着它是个好主意,或者螺丝刀在所有情况下都是坏的。

答案 1 :(得分:5)

如果您需要定期使用它来获得正确的输出,那么您有设计或加入问题

否则完全有效。

它是一种聚合:相当于所有输出列上的GROUP BY。所以这是一个额外的步骤是查询处理

答案 2 :(得分:1)

这是语言的一部分,所以应该使用。

使用DISTINCT的某些情况是否会导致表扫描,否则不会发生。

如果影响不可接受,您需要测试自己的每个用例以查看是否存在影响并找到解决方法。

答案 3 :(得分:1)

从此http://www.mindfiresolutions.com/Think-Before-Using-Distinct-Command-Arbitarily-1050.php

有时会看到初学者是否在结果集中获得了一些重复项,然后他们使用的是DISTINCT。但这有其自身的缺点。

Distinct会降低查询的性能。因为正常的过程是对结果进行排序,然后删除那些行 等于它之前的那一行。

DISTINCT比较记录的所有字段。所以DISTINCT会增加计算量。

答案 4 :(得分:0)

如果您希望工作确保结果在SQL计算机上的SQL服务器内发生,则使用它。如果您不介意将额外的结果发送到客户端并在那里进行工作(以减少服务器负载),那么就这样做。这取决于您的性能要求和数据库的特性。

例如,如果distinct不太可能会大大减少结果集,并且您没有索引正确的列以使其快速,并且您需要减少SQL Server负载,并且您在客户端,并且很容易确保客户端的清晰度 - 然后您可能希望这样做。

这有很多ifs,ands和mights。如果您不知道 - 只需使用它。