tipos procedimientos funciones entre diferencia almacenados sql stored-procedures

tipos - diferencia entre funciones y procedimientos almacenados sql server



Procedimientos almacenados vs consultas parametrizadas (5)

Aquí hay algunas ventajas para los procedimientos almacenados:

En términos de mantenibilidad:

Uno podría usar consultas parametrizadas para operaciones simples / triviales, como recuperar datos o insertar datos en la tabla. Los procedimientos almacenados son más fáciles de mantener que las consultas en línea si tiene un código complicado (de procesamiento). A quién le gustaría mantener el código fuente del programa mezclado con código SQL complicado en el mismo archivo. Además, casi todas las consultas parametrizadas que son complejas se pueden encontrar divididas en múltiples concats de cadenas. Lo creas o no, he visto una consulta SQL concatenada en más de 60 líneas de longitud.

En términos de velocidad:

En primer lugar, podría pensar en el tiempo que lleva compilar la consulta y, también, el tiempo que lleva crear un plan de ejecución (en ocasiones, ambos son más largos que el tiempo de ejecución de la consulta). Los procedimientos almacenados se compilan solo una vez, a menos que se especifique, y el plan de ejecución se almacena, por lo que un reinicio del servidor no se perderá. Además, para las consultas, los planes de ejecución no se crean de inmediato, sino después de unas pocas llamadas de la misma consulta (dependiendo del motor de la base de datos).

En términos de conexión:

Si tiene una conexión lenta al servidor sql y consultas grandes, probablemente sería mejor utilizar procedimientos almacenados, ya que generan menos tráfico de red y, por lo general, menos viajes de ida y vuelta entre el servidor y el cliente.

Además, también hay muchas otras ventajas / desventajas de usar una sobre otra, pero la oferta sería para procedimientos almacenados en la mayoría de los casos.

En este momento no hay ventaja en mi mente para las consultas parametrizadas, pero dejaría que otros vinieran con ellas.

¿Prefiere usar procedimientos almacenados o consultas parametrizadas? ¿Cuál es su argumento que apoya su elección? ¿Hay algún método realmente mejor que el otro en términos de rendimiento, seguridad, mantenimiento, etc.?


Bogdan ya lo dijo. Piénselo de esta manera: ¿quiere escribir una separación limpia entre el código de la aplicación y la capa de acceso a los datos, o quiere ser como esos programadores vilipendiados de PHP que incrustan el código HTML en sus scripts?

Colocar SQL dentro de la aplicación y llamar al DB es fácil, desde el punto de vista del desarrollador de la aplicación, pero los SP son el mejor enfoque en todos los sentidos. Una vez que los haya creado, son fáciles de depurar (especialmente con las herramientas que vienen con SQL Server)

El enfoque final es diseñar su aplicación y luego proporcionar los componentes de acceso a datos requeridos a un administrador de bases de datos para que lo codifique; él le proporciona una API para llamar, y las minucias internas de averiguar cómo devolver los datos solicitados dependen de él , que con suerte es mucho más experto en cómo hacer que las relaciones de datos funcionen mejor de lo que usted podría hacer.

Las consultas parametrizadas funcionan, y no hay ninguna razón para prohibirlas, pero al igual que te tomas el tiempo para diseñar correctamente tu aplicación, debes tomarte el tiempo de poner los SP en ella.


Desde la etiqueta .NET (y solo desde la etiqueta) voy a asumir SQL Server aquí. Las consultas parametrizadas son excelentes para proyectos que tienen una sola aplicación y requisitos de seguridad modestos. Requieren menos esfuerzo de configuración, y muchos sistemas ORM los van a usar si les gusta o no.

Por otro lado, si su base de datos es manejada por múltiples aplicaciones y necesita forzar la consistencia del acceso, o si necesita seguridad compleja (acceso parcial a las tablas, ya sea por columna o por fila, o ambas), debe usar procedimientos almacenados. Le permiten hacer cumplir sus requisitos de seguridad y proporcionar una interfaz coherente para que las aplicaciones no violen sus reglas de datos.

En lo que respecta al rendimiento, no he notado suficiente diferencia entre los dos para preocuparse en estos días: el almacenamiento en caché de los planes de consultas parametrizadas parece funcionar bastante bien.


Dos preguntas que puede hacerse a sí mismo cuando considere esto son:

Si tengo que hacer grandes cambios en la estructura de la base de datos, ¿qué prefiero reescribir?

y

Cuando estoy depurando un problema, ¿qué haría mi vida más fácil?


Me gusta usar procedimientos almacenados porque me ayudan a escribir código orientado a transacciones en lugar de código orientado a objetos. Aíslan la lógica de la base de datos. No tengo que compilar nada para implementarlos. Entonces, arreglarlos después de la implementación de la aplicación principal es más fácil. Para consultas simples que solo leen datos, solo uso consultas parametrizadas. Para cualquier cosa que modifique la base de datos o use una selección compleja, utilizo un procedimiento almacenado.

La gran ventaja de los procedimientos almacenados en el rendimiento es mantener los datos en el servidor SQL y no tener que transferirlos al cliente para procesarlos. La idea completa de procesar datos por lotes y minimizar el uso del cursor.

La gran ventaja de los procedimientos almacenados en seguridad es que se pueden asegurar a través de permisos como tablas. También puede aplicar la seguridad de los datos de nivel empresarial en ellos.