首页 > 解决方案 > 重新编译查询计划

问题描述

我们最近在生产环境中发布了一个新的索引视图,以帮助提高特定查询的性能,尽管性能已显着提高,但我们注意到服务调用有时会占用一秒钟。

我做了一些调查,我可以看到服务调用需要一秒钟才能执行的实例与查询计划的编译相吻合。一旦我知道我监视了它并且可以看到由于更新的统计信息而正在重新编译它。

此表中的数据不断变化,因此我希望统计信息会随着自动创建统计信息的启用而更新,但我只是想知道人们在这种情况下会做什么。是查询提示,例如 KEEPFIXED PLAN(在我的情况下不可能)还是计划指南有帮助?

这不是一个大问题,因为我们会看到每分钟有非常大量的调用,其中一些会受到重新编译的影响。更多的是出于好奇。

标签: sql-servertsqlsql-server-2012

解决方案


我将启用异步统计更新并查看行为是否仍然存在

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options?view=sql-server-2017#auto_update_statistics_async

启用此选项后,优化器不会在编译计划之前等待统计信息更新。缺点是您可能会使用过期统计信息生成的计划执行查询


推荐阅读