M4N*_*M4N 16 .net ado.net sqlcommand
这是MSDN说有关SqlCommand.Prepare():
在SQL Server实例上创建命令的准备版本.
任何人都可以提供更多的见解,了解这意味着何时应该使用它?
cas*_*One 14
该Prepare方法实际上是打开的DbCommand,从中派生出来的所有类都会被提取.
它的作用是特定于数据库提供者的DbCommand目的.但是,可以肯定地说(虽然不是绝对的规则),在大多数地方,如果命令是一个存储过程,它会产生一个无操作(它被记录为这样的的覆盖Prepare上SqlCommand),存储过程通常有由于先前调用,显式调用优化或创建(同样,取决于底层数据库),它们的查询计划已经过优化.
但是,如果您不使用存储过程,而是使用即时生成的参数化查询,则此调用将为底层数据库提供生成查询的优化版本的机会.
当您知道要在很短的时间内多次执行命令时(通常,这取决于数据库以及查询计划的缓存时间),通常会执行此操作.
应该说明SQL Server(截至2005年,IIRC)根据第一次执行后的使用情况缓存参数化查询计划(我认为缓存是一个时间降级的缓存,它会在后续使用时重置或降低其衰减速率),因此,如果您打算使用相同的参数化查询进行多次调用,那么Prepare除了预先调动查询准备工作之外,您可能无法获得太多收益(这可能也是一个好处,具体取决于您的工作是什么去表演).
Dan*_*haw 12
可以在这里找到更多信息.
但是,请记住:
在SQL Server中,由于SQL Server重用执行计划的方式,准备/执行模型与直接执行相比没有明显的性能优势.SQL Server具有有效的算法,用于将当前SQL语句与为先前执行同一SQL语句而生成的执行计划进行匹配.如果应用程序多次执行带有参数标记的SQL语句,则SQL Server将重复执行第一次执行的执行计划以执行第二次和后续执行(除非计划从过程高速缓存开始老化).准备/执行模型仍然具有以下好处:
通过标识句柄查找执行计划比用于将SQL语句与现有执行计划匹配的算法更有效.
应用程序可以控制何时创建执行计划以及何时重用它.
准备/执行模型可移植到其他数据库,包括早期版本的SQL Server.
通常,当您执行查询时,会经历从解析字符串到运行执行计划的整个过程。通过调用Prepare,它将使进程尽可能地走向执行,而不实际运行执行计划。
当一遍又一遍地运行相同的命令时,这非常有用。您将节省一些执行时间,因为不必每次都重复整个过程。
| 归档时间: |
|
| 查看次数: |
11721 次 |
| 最近记录: |