我很久以来就在这个问题上打破了局势。我在MS SQl中存储过程,当我尝试通过提供SQL Query中的所有参数来执行该过程时,执行需要很长时间,但是当我尝试直接运行SP中的查询时,它立即执行。这也影响了我的应用程序性能,因为我们正在使用存储过程从数据库服务器获取数据。
请帮忙。
此致
维克拉姆
答案 0 :(得分:3)
这是一个很好的解释:I Smell a Parameter!
基本上,sql server已经为其首次运行的参数缓存了查询执行计划,因此该计划对于您传递的新值不是最佳的。当您直接运行查询时,此时会生成计划,这就是为什么它很快。
您可以使用sp_recompile手动标记重新编译的过程,或在其定义中使用With Recompile选项,以便在每次运行时编译它。