存储过程需要花时间执行

时间:2010-10-18 11:23:30

标签: sql-server-2005

我很久以来就在这个问题上打破了局势。我在MS SQl中存储过程,当我尝试通过提供SQL Query中的所有参数来执行该过程时,执行需要很长时间,但是当我尝试直接运行SP中的查询时,它立即执行。这也影响了我的应用程序性能,因为我们正在使用存储过程从数据库服务器获取数据。

请帮忙。

此致

维克拉姆

1 个答案:

答案 0 :(得分:3)

看起来像parameter sniffing.

这是一个很好的解释:I Smell a Parameter!

基本上,sql server已经为其首次运行的参数缓存了查询执行计划,因此该计划对于您传递的新值不是最佳的。当您直接运行查询时,此时会生成计划,这就是为什么它很快。

您可以使用sp_recompile手动标记重新编译的过程,或在其定义中使用With Recompile选项,以便在每次运行时编译它。