在sql Server 2008上运行的存储过程,我有一个相当复杂(或丑陋,取决于你如何看待它).它具有一个pk表和一个fk表视图的大量逻辑. fk表被连接到pk表略多于30次(fk表设计不佳 – 它使用名称值对,我需要展平,不幸的是,它是第三方,我不能改变它).
无论如何,它已经运行了好几个星期,直到我定期注意到需要3-5分钟的跑步.事实证明,这是生成查询计划所需的时间.一旦查询计划存在并被缓存,存储过程本身就非常有效地运行.事情运行顺利,直到有理由重新生成并再次缓存查询计划.
有没有人看到这个?为什么需要这么长时间来制定计划?有没有办法让它更快地提出计划?
解决方法
您可以尝试使用
Plan Guide.计划生成仍将持续一段时间,但应显着缩短.