¿Diferencia entre EXEC () y sp_executesql sin parámetros?

8

Acabo de enterarme sobre el nuevo procedimiento almacenado sp_executesql. Me gusta el hecho de que hay una manera de ejecutar código parametrizado desde SQL Server.

Pero me pregunto cuál es la diferencia entre usar el procedimiento almacenado sp_executesql cuando no tiene ningún parámetro en lugar de simplemente llamar a EXEC directamente. Además, ¿hay alguna implicación en el rendimiento?

exec('select * from line_segment')
exec sp_executesql N'select * from line_segment'

Además, ¿hay alguna diferencia entre 2005 y 2008 o los manejan de la misma manera?

Ricardo
fuente

Respuestas:

11

sp_executesql admite la parametrización, mientras que EXEC solo acepta una cadena.

Solo las diferencias de rendimiento que pueden surgir se deben a la parametrización, es decir, es más probable que una llamada sp_executesql parametrizada tenga un plan en caché reutilizable. Es probable que una llamada EXEC genere muchos desperdicios de espacio de un solo uso en el caché del plan.

Mark Storey-Smith
fuente
Entonces, cuando se llama a sp_executesql sin parámetros, ¿es tan eficiente como EXEC?
Richard
Si ambos producen el mismo plan de ejecución, entonces sí, el rendimiento debe ser el mismo. Podría argumentar que la detección de parámetros puede causar problemas con sp_executesql, pero las causas y las soluciones serían las mismas que para los procesos almacenados.
Mark Storey-Smith
2

Esto me ayudó a descifrar la entrevista, por eso estoy publicando para ayudar a alguien por lo mismo.

ingrese la descripción de la imagen aquí

¡Buena suerte!

pedram
fuente