在SQL中使用distinct命令是不错的做法?是否存在明显命令的缺点?
答案 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。如果您不知道 - 只需使用它。