, Prepare
method is actually on DbCommand
, que recogerá todas las clases que deriven de ella.
Lo que hace es específico para el proveedor de base de datos que el DbCommand
es para. Sin embargo, es seguro decir (aunque no es una regla absoluta) que en la mayoría de los lugares, si el comando es un procedimiento almacenado, producirá una operación no (está documentado como tal para el override of Prepare
on SqlCommand
), ya que los procedimientos almacenados normalmente tienen su consulta planes optimizados debido a llamadas previas, llamadas explícitas para optimizar o en la creación (nuevamente, dependiendo de la base de datos subyacente).
Sin embargo, si usted es no utilizando un procedimiento almacenado, sino más bien una consulta parametrizada generada sobre la marcha, esta llamada dará a la base de datos subyacente la oportunidad de generar una versión optimizada de la consulta.
Normalmente haría esto cuando sepa que va a ejecutar el comando varias veces en un corto período de tiempo (depende, realmente, de la base de datos y de cuánto tiempo se guardan en caché los planes de consulta). Debe decirse que SQL Server (a partir de 2005, IIRC) almacena en caché planes de consulta parametrizados dependiendo del uso después de la primera ejecución (creo que el caché es un caché degradado que se reestablece o tiene su velocidad de caída disminuida usos posteriores), por lo que si va a realizar varias llamadas con la misma consulta parametrizada, puede que no gane mucho con una llamada al Prepare
que no sea mover el trabajo de preparación de la consulta por adelantado (lo que también podría ser un beneficio, dependiendo de qué el trabajo es lo que tienes que realizar).
Pregunta relacionada http://stackoverflow.com/questions/2449827/pros-and-cons-of-using-sqlcommand-prepare-in-c – MadBoy