我有一个查询可以在没有EXEC sp_executesql
的情况下立即获得结果,
但是当我使用sp_executesql
时,sql server使用不同的执行计划,并且需要5分钟才能获得结果。
我还尝试了EXEC sp_updatestats
和dbcc freeproccache
,但sp_executesql
选择了错误的执行计划。
当我使用OPTION (RECOMPILE)
时,会立即获得结果,但我不想在每个查询中使用OPTION (RECOMPILE)
。
如何让sp_executesql
选择正确的执行计划?
答案 0 :(得分:1)
您所描述的问题可能是parameter sniffing的结果。您应该查看有关此主题的一些现有帖子:
答案 1 :(得分:1)
我的索引是过滤索引,似乎sp_executesql
无法使用过滤索引!我从索引中删除了过滤器并重新创建它,我的问题就解决了。