SQLServer的UNION比UNION ALL具有更好的性能?
我知道UNION ALL应该比UNION具有更好的性能(参见:
performance of union versus union all).
现在,我有这个庞大的存储过程(有很多查询),其中最后的结果是两部分SELECT,它们之间有一个UNION.由于两个数据集彼此都是外来的,我可以使用UNION ALL,它假设更好(没有明显的操作). 我在几个数据库上检查它,它工作正常.问题是我的一个客户给我他的数据库进行性能调整,当我调查它时,我注意到如果我将UNION ALL更改为UNION,性能会更好(!).这是我在存储过程中所做的所有改变. 有人可以解释一下这种情况会怎样? 谢谢, 更新: 解决方法您引用了另一个指向此 article的主题.如果你检查这个,这里有两个不同的执行计划.最大的区别是Distinct Sort使得表现更差. 在您的示例中,两个执行计划与物理操作Merge Join具有相同的步骤(仅逻辑操作不同).甚至估计都是一样的. 现在我真的是courios:两个查询之间的区别有多大? 如果您没有执行以下操作,请再次重复测试: DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS 这使缓存清晰,你可以在两种情况下进行“冷运行”.您也可以在这里查看其他article. 2)重复运行几次以查看平均值. 差异是否仍然存在? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |