0

我有 SQL Server 存储过程来插入或更新一些数据(做一些逻辑)。我想从 .net 应用程序中多次调用它来插入/更新许多行。

当存储过程已经编译并且只需要参数时,将存储过程作为准备好的语句调用是否有意义?

4

1 回答 1

2

任何存储过程(如参数化查询)也必须在 SQL Server 执行之前解析一次。

在解析期间,执行计划被确定并存储在 SQL Server 的计划缓存中,并且对该存储过程(或参数化查询)的任何后续调用都将重用该缓存的执行计划。该缓存的执行计划将一直保留在内存中,直到 SQL Server 重新启动,或者直到由于内存压力而必须清除缓存。

所以基本上 - 存储过程(或参数化查询)必须解析一次(以确定执行计划)这一事实是没有办法的 - 一旦完成,执行计划就在内存中并且可以重用。这也意味着:对存储过程的第一次调用(自上次 SQL Server 重新启动以来)总是会慢一些——毕竟,需要执行更多的工作——并且任何后续调用都应该明显更快。

于 2013-03-29T11:30:37.700 回答