使用大量UNION执行视图时出错

时间:2017-06-01 14:35:55

标签: sql sql-server query-performance sqlperformance

我必须执行一个视图 A ,它从其他视图中获取数据 B 由相同类型的三百个视图的UNION组成(两个表之间的连接) 。当我执行视图 A 时,它会崩溃,显示此错误:

  

错误:“查询处理器耗尽了内部资源,可以   不生成查询计划。这是一个罕见的事件,只有预期   非常复杂的查询或引用非常大的查询   表或分区的数量。请简化查询。如果你   相信您错误地收到了此消息,请联系客户   支持服务以获取更多信息。“

由于存在错误,因此未生成查询执行计划,但我已能够为另一次执行生成它。我无法上传查看 A 的执行计划,因为它的权重很大,但您可以在此处查看 B 的执行计划:

https://www.brentozar.com/pastetheplan/?id=S1i7FiTWb

enter image description here

有没有办法避免这个错误?

1 个答案:

答案 0 :(得分:0)

是的,你可以。你必须重新修改你的架构。 Sql Server资源有限,从300个视图中选择是一个非常荒谬的数量。

没有ifs,buts或maybes,这样的配置会继续困扰你,直到你拥有,而且没有人可以帮助你。