sp_executesql使用错误的执行计划

时间:2016-05-03 14:08:31

标签: sql-server performance

我有一个查询可以在没有EXEC sp_executesql的情况下立即获得结果, 但是当我使用sp_executesql时,sql server使用不同的执行计划,并且需要5分钟才能获得结果。

我还尝试了EXEC sp_updatestatsdbcc freeproccache,但sp_executesql选择了错误的执行计划。

当我使用OPTION (RECOMPILE)时,会立即获得结果,但我不想在每个查询中使用OPTION (RECOMPILE)

如何让sp_executesql选择正确的执行计划?

2 个答案:

答案 0 :(得分:1)

您所描述的问题可能是parameter sniffing的结果。您应该查看有关此主题的一些现有帖子:

答案 1 :(得分:1)

我的索引是过滤索引,似乎sp_executesql无法使用过滤索引!我从索引中删除了过滤器并重新创建它,我的问题就解决了。