SQLServer的UNION比UNION ALL具有更好的性能?

SQLServer的UNION比UNION ALL具有更好的性能?,第1张

概述我知道UNION ALL应该比UNION具有更好的性能(参见: performance of union versus union all). 现在,我有这个庞大的存储过程(有很多查询),其中最后的结果是两部分SELECT,它们之间有一个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:两个查询之间的区别有多大?

如果您没有执行以下 *** 作,请再次重复测试:
1)在运行PRC之前使用以下行:

DBCC FREEPROCCACHEDBCC DROPCLEANBUFFERS

这使缓存清晰,你可以在两种情况下进行“冷运行”.您也可以在这里查看其他article.

2)重复运行几次以查看平均值.

差异是否仍然存在?

总结

以上是内存溢出为你收集整理的SQLServer的UNION比UNION ALL具有更好的性能?全部内容,希望文章能够帮你解决SQLServer的UNION比UNION ALL具有更好的性能?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1176470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存