工会与工会的表现

时间:2010-09-02 14:12:39

标签: sql-server performance union union-all

我必须跨多个表运行一个select语句。我确信这些表会返回不同的记录。我无论如何都在使用UNION ALL。

当我确定表返回不同的记录时,在性能方面使用UNION或UNION ALL会更好吗?

5 个答案:

答案 0 :(得分:24)

当您不关心消除重复记录时,UNION ALL将比UNION表现更好,因为您避免了昂贵的distinct sort操作。请参阅:SQL SERVER – Difference Between Union vs. Union All – Optimal Performance Comparison

答案 1 :(得分:5)

UNION ALL总是更快,因为UNION排除了重复的条目

答案 2 :(得分:4)

UNION在内部实现两个查询。 1。SELECT将返回数据集 2。DISTINCT。 任何研究过数据库内部的人都可以很容易地理解DISTINCT子句在处理方面成本极高。

如果您非常确定结果数据集不需要具有唯一行,那么我们可以跳过UNION并使用UNION ALL代替。

UNION ALL将与UNION相同,只是它不会激活DISTINCT内部节省我们代价高昂的操作

答案 3 :(得分:1)

当你知道你想要所有的结果行时,最好使用UNION ALL,无论你是否知道它们是不同的。没有“全部”的UNION将始终执行“不同检查”,无论数据实际是什么。

答案 4 :(得分:0)

为什么UNION ALL更快?因为UNION必须进行排序以删除重复项。如果你不需要删除重复项,那么UNION ALL是更好的选择,但是UNION确实有用,应该在适当的时候使用。