我有一个查询,无需 EXEC sp_executesql
即可立即获取结果,
但是当我使用 sp_executesql
时,sql server 使用不同的执行计划,并且需要超过 5 分钟才能获得结果。
我还尝试了 EXEC sp_updatestats
和 dbcc freeproccache
,但 sp_executesql
选择了错误的执行计划。
当我使用OPTION (RECOMPILE)
时,它会立即得到结果,但我不想在每个查询中使用OPTION (RECOMPILE)
。
如何让sp_executesql
选择正确的执行计划?
最佳答案
您描述的问题可能是 parameter sniffing 的结果。您应该查看有关此主题的一些现有帖子:
关于sql-server - sp_executesql 使用错误的执行计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37006539/