-2

所以我有一个在应用程序中很慢,但在 SSMS 中很快,就像在Sommarskog 的查询计划之谜文章中一样。

查询是具有许多可能变化的参数的搜索。奇怪的是,当我重新索引时,它会在 2 秒内执行。然后我调用 dbcc freeproccache,无论我再次执行多少次存储过程,它都需要 40 秒。如果我再次重新索引,性能就会恢复。如果我释放 proc cachec,它会回到 40 秒。

如何在重新索引后立即执行以保留在缓存中并可供应用程序使用的良好执行计划?

4

1 回答 1

0

可能是参数嗅探问题。参数嗅探基本上是 SQL Server 使用您传入的第一组参数来确定将用于所有未来执行的执行计划。如果这些参数生成的执行计划适用于将要执行的所有各种条件,这可能会很好,但有时可能会出现问题。

检查这一点的一种快速方法是使用 RECOMPILE 查询提示并查看加快速度的 fi。如果您决定走这条路,请确保在将其投入生产环境之前完全了解您所做的事情的后果。

于 2013-01-29T23:58:13.133 回答