生成SQL查询计划需要5分钟,查询本身以毫秒为单位运行.这是怎么回事?

在SQL Server 2008上运行的存储过程,我有一个相当复杂(或丑陋,取决于你如何看待它).它具有一个pk表和一个fk表视图的大量逻辑. fk表被连接到pk表略多于30次(fk表设计不佳 – 它使用名称值对,我需要展平,不幸的是,它是第三方,我不能改变它).

无论如何,它已经运行了好几个星期,直到我定期注意到需要3-5分钟的跑步.事实证明,这是生成查询计划所需的时间.一旦查询计划存在并被缓存,存储过程本身就非常有效地运行.事情运行顺利,直到有理由重新生成并再次缓存查询计划.

有没有人看到这个?为什么需要这么长时间来制定计划?有没有办法让它更快地提出计划?

最佳答案
您可以尝试使用Plan Guide.计划生成仍将持续一段时间,但应显着缩短.

转载注明原文:生成SQL查询计划需要5分钟,查询本身以毫秒为单位运行.这是怎么回事? - 代码日志