从c#调用时,Sql Server是否缓存存储过程执行计划?

时间:2014-04-16 12:34:18

标签: sql-server ado.net

我正在foreach循环中使用一个参数执行存储过程。我得到结果并在那之后做一些额外的处理。这是代码:

foreach(var id in GetIds())
{
    var result = ExecuteStoreProcedureForResult(id);
    //do extra processing with the result
}

当我第一次直接从查询分析器执行sp时,需要4-5秒。每次在查询之后,过程以毫秒为单位返回,即使使用不同的ID参数 - 比第一次快得多。

我的问题是,如果我从代码执行此sp,查询计划是否会被缓存并在第一次执行后更快地返回结果。与查询分析器一样?

我打开连接一次,为每个参数执行sp,最后关闭连接。这会有所作为吗?

所有建议都表示赞赏。

1 个答案:

答案 0 :(得分:2)

Query execution cachingSQL server级别完成,无论哪种编程语言调用stored procedure都无关紧要。

至于建议,你应该很好地运行SP多次,我建议你不要自己关闭连接。你没有显示代码,但我建议你利用IDisposable而不是每次手动打开和关闭连接可能非常昂贵。