我必须执行一个视图 A ,它从其他视图中获取数据 B 由相同类型的三百个视图的UNION组成(两个表之间的连接) 。当我执行视图 A 时,它会崩溃,显示此错误:
错误:“查询处理器耗尽了内部资源,可以 不生成查询计划。这是一个罕见的事件,只有预期 非常复杂的查询或引用非常大的查询 表或分区的数量。请简化查询。如果你 相信您错误地收到了此消息,请联系客户 支持服务以获取更多信息。“
由于存在错误,因此未生成查询执行计划,但我已能够为另一次执行生成它。我无法上传查看 A 的执行计划,因为它的权重很大,但您可以在此处查看 B 的执行计划:
https://www.brentozar.com/pastetheplan/?id=S1i7FiTWb
有没有办法避免这个错误?
答案 0 :(得分:0)
是的,你可以。你必须重新修改你的架构。 Sql Server资源有限,从300个视图中选择是一个非常荒谬的数量。
没有ifs,buts或maybes,这样的配置会继续困扰你,直到你拥有,而且没有人可以帮助你。