我正在foreach循环中使用一个参数执行存储过程。我得到结果并在那之后做一些额外的处理。这是代码:
foreach(var id in GetIds())
{
var result = ExecuteStoreProcedureForResult(id);
//do extra processing with the result
}
当我第一次直接从查询分析器执行sp时,需要4-5秒。每次在查询之后,过程以毫秒为单位返回,即使使用不同的ID参数 - 比第一次快得多。
我的问题是,如果我从代码执行此sp,查询计划是否会被缓存并在第一次执行后更快地返回结果。与查询分析器一样?
我打开连接一次,为每个参数执行sp,最后关闭连接。这会有所作为吗?
所有建议都表示赞赏。
答案 0 :(得分:2)
Query execution caching
在SQL server
级别完成,无论哪种编程语言调用stored procedure
都无关紧要。
至于建议,你应该很好地运行SP多次,我建议你不要自己关闭连接。你没有显示代码,但我建议你利用IDisposable
而不是每次手动打开和关闭连接可能非常昂贵。