我必须跨多个表运行选择语句。我确信这些表返回不同的记录。无论如何,我都在使用 UNION ALL。
当我确定表返回不同的记录时,在性能方面使用 UNION 或 UNION ALL 会更好吗?
我必须跨多个表运行选择语句。我确信这些表返回不同的记录。无论如何,我都在使用 UNION ALL。
当我确定表返回不同的记录时,在性能方面使用 UNION 或 UNION ALL 会更好吗?
当您不担心消除重复记录时,UNION ALL 将比 UNION 执行得更好,因为您避免了昂贵的不同排序操作。请参阅:SQL SERVER – Union 与 Union All 之间的区别 – 最佳性能比较
UNION ALL 总是更快,因为 UNION 排除了重复的条目
UNION 在内部实现两个查询。1.SELECT这将返回一个数据集 2. DISTINCT. 任何研究过数据库内部的人都可以很容易地理解,一个DISTINCT子句在处理方面是极其昂贵的。
如果您非常确定生成的数据集不需要具有唯一行,那么我们可以跳过UNION并UNION ALL改用。
UNION ALL将与它相同,UNION只是它不会在DISTINCT内部触发我们昂贵的操作
当您知道想要所有结果行时,最好使用 UNION ALL,无论您是否知道它们将是不同的。没有“all”的 UNION 将始终执行“distinct check”,无论数据实际是什么。
为什么 UNION ALL 更快?因为 UNION 必须进行排序以删除重复项。如果您不需要删除重复项,那么 UNION ALL 是更好的选择,但是 UNION 确实有目的,应该在适当的时候使用。