2010-09-22 33 views
57

He usado ambos, pero lo que no estoy claro es cuando preferiría uno sobre el otro. Quiero decir, sé que el procedimiento almacenado puede tomar parámetros ... pero realmente todavía podemos realizar lo mismo usando Views también, ¿verdad?Procedimientos almacenados vs. Vistas

Por lo tanto, teniendo en cuenta el rendimiento y otros aspectos ¿cuándo y por qué debería preferir uno sobre el otro?

+7

Debe incluir las funciones definidas por el usuario en sus consideraciones. –

+0

Parece un duplicado de este: [¿Cuáles son los pros y los contras de mantener SQL en los procesos almacenados en comparación con el código] (http://stackoverflow.com/questions/15142/what-are-the-pros-and-cons-to -mantener-sql-in-stored-procs-versus-code), que también es un Wiki de la comunidad. – Hibou57

Respuesta

34

Bueno, utilizaría el procedimiento almacenado para encapsular el código y controlar los permisos mejor.

Una vista no es realmente una encapsulación: es una macro que se expande. Si comienzas a unir visitas muy pronto, tendrás algunas consultas terribles. Sí que pueden estar unidas pero no deberían hacerlo ..

Decir eso, las vistas son una herramienta que tiene su lugar (las vistas indizadas por ejemplo) como procedimientos almacenados.

+0

Esta respuesta fue muy imp para mí. Pero me pregunto cómo ejecutar vistas, ya que sé cómo ejecutar el proceso almacenado como exec spName.please guid me. – Freelancer

+1

@Freelancer: 'SELECT * FROM View', al igual que una tabla – gbn

18

La ventaja de las vistas es que pueden tratarse como tablas. Puede usar DONDE obtener datos filtrados de ellos, UNIRSE a ellos, etcétera. Incluso puede insertar datos en ellos si son lo suficientemente simples. Las vistas también le permiten indexar sus resultados, a diferencia de los procedimientos almacenados.

+4

UNIRSE es * no * una buena razón en absoluto. – gbn

+2

@gbn: ¿Por qué no ...? –

+3

Ver mi respuesta ...? La mentalidad es "podemos tener un punto de vista que hace todo esto por nosotros", luego ver join join join view = horrible query en las tablas base. Visto, lo arregló varias veces antes. Y también respondió preguntas en él http://stackoverflow.com/search?q=user%3A27535+macro%2Bview – gbn

11

La principal ventaja de los procedimientos almacenados es que le permiten incorporar lógica (scripting). Esta lógica puede ser tan simple como un IF/ELSE o más complejo como DO WHILE loops, SWITCH/CASE.

3

Las vistas son útiles si existe una cierta combinación de tablas o un subconjunto de datos que desea consultar constantemente, por ejemplo, un usuario unido a sus permisos. Las vistas deberían de hecho tratarse como tablas.

Los procedimientos almacenados son piezas de código sql que se 'compilan', como en el caso de que, para ejecutarse de manera más óptima que una otra consulta aleatoria. El plan de ejecución de código sql en un procedimiento almacenado ya está construido, por lo que la ejecución se ejecuta ligeramente más suave que la de una instrucción SQL ordinaria.

4

Correlaciono el uso de procedimientos almacenados con la necesidad de enviar/recibir transacciones hacia y desde la base de datos. Es decir, cada vez que necesito enviar datos a mi base de datos, utilizo un procedimiento almacenado. Lo mismo es cierto cuando quiero actualizar datos o consultar la base de datos para que se use la información en mi aplicación.

Las vistas de base de datos son geniales cuando desea proporcionar un subconjunto de campos de una tabla determinada, permite que los usuarios de MS Access vean los datos sin riesgo de modificarlos y asegurarse de que sus informes generen los resultados anticpatados .

+4

En primer lugar, no debe tener usuarios de MS Access. En segundo lugar, la seguridad y los permisos adecuados deberían evitar que modifiquen los datos. No vistas – CaffGeek

11

Una vista es como una sola declaración de consulta guardada, no puede contener lógica compleja o varias instrucciones (más allá del uso de unión, etc.). Para cualquier cosa compleja o personalizable a través de los parámetros, elegiría procedimientos almacenados que permiten una flexibilidad mucho mayor.

Es común usar una combinación de vistas y procedimientos almacenados en una arquitectura de base de datos, y quizás por razones muy diferentes. A veces se trata de lograr compatibilidad con versiones anteriores en sprocs cuando el esquema se rediseña, a veces para hacer que los datos sean más manipulables en comparación con la forma en que se almacenan de forma nativa en tablas (vistas desnoralizadas).

El uso intensivo de Views puede degradar el rendimiento, ya que es más difícil para SQL Server optimizar estas consultas. Sin embargo, es posible usar vistas indizadas que realmente pueden mejorar el rendimiento cuando se trabaja con uniones de la misma manera que las tablas indexadas. Hay restricciones mucho más estrictas sobre la sintaxis permitida cuando se implementan vistas indexadas y muchas sutilezas para que realmente funcionen según la edición de SQL Server.

Piense en Vistas de ser más como tablas que los procedimientos almacenados.

0

Dos razones.

Uso procedimiento almacenado en lugar de la vista si no se desea la inserción sea posible. Insertar en una vista puede no dar lo que parece hacer. Insertará en una tabla, una fila que puede no coincidir con la consulta de la vista, una fila que luego no aparecerá en la vista; insertado en algún lugar, pero no donde la declaración lo hace parecer.

Utilizar una vista si no se puede utilizar el resultado de un procedimiento almacenado de otro procedimiento almacenado (que nunca fue capaz de hacer los últimos trabajos, al menos con MySQL).

21

procedimiento almacenado: Los procedimientos almacenados son consultas de bases de datos precompilados que mejoran la seguridad, la eficiencia y la facilidad de uso de aplicaciones cliente/servidor de bases de datos . Los desarrolladores especifican un procedimiento almacenado en términos de variables de entrada y salida. Luego compilan el código en la plataforma de la base de datos y lo ponen a disposición de los desarrolladores de la aplicación para usar en otros entornos, como las aplicaciones web. Todas las principales plataformas de bases de datos, incluidos Oracle, SQL Server y MySQL admiten los procedimientos almacenados. Los principales beneficios de esta tecnología son las ganancias de rendimiento sustanciales de la ejecución precompilada, la reducción del tráfico cliente/servidor, las ganancias de eficiencia de desarrollo de reutilización y abstracción de código y los controles de seguridad inherentes a otorgando permisos a los usuarios sobre procedimientos almacenados específicos en lugar de las tablas de base de datos subyacentes.

Vistas: Las vistas de la base de datos le permiten crear "tablas virtuales" que se generan sobre la marcha cuando se accede a ellas. Una vista se almacena en el servidor de la base de datos como una declaración SQL que extrae datos de una o más tablas y (opcionalmente) realiza transformaciones en esos datos. Los usuarios pueden consultar la vista como lo harían con cualquier tabla real de base de datos . Las vistas se utilizan a menudo para aliviar problemas de seguridad al , que proporciona a los usuarios acceso a una determinada vista de una tabla de base de datos sin proporcionar acceso a la tabla subyacente.

enter image description here

+0

¿qué significa 'eliminar consultas'? –

+0

Gracias. ¿De qué libros son las citas y la tabla? – Tim

+0

@ Z.I.J usted está citando algo pero no mencionó una fuente de ello –

3

procedimiento almacenado: Los procedimientos almacenados son consultas de bases de datos precompilados que mejoran la seguridad, la eficiencia y la facilidad de uso de aplicaciones cliente/servidor de bases de datos. Los desarrolladores especifican un procedimiento almacenado en términos de variables de entrada y salida. A continuación, compilan el código en la plataforma de la base de datos y lo ponen a disposición de los desarrolladores de aplicaciones para su uso en otros entornos, como las aplicaciones web. Todas las principales plataformas de bases de datos, incluidos Oracle, SQL Server y MySQL admiten procedimientos almacenados. Los principales beneficios de esta tecnología son las ganancias de rendimiento sustanciales de la ejecución precompilada, la reducción del tráfico cliente/servidor, las ganancias de eficiencia de desarrollo de la reutilización y abstracción del código y los controles de seguridad inherentes a la concesión de permisos a los usuarios sobre procedimientos almacenados específicos en lugar .

Vistas: vistas de bases de datos le permiten crear tablas "virtuales" que se generan sobre la marcha cuando se accede a ellos. Una vista se almacena en el servidor de la base de datos como una declaración SQL que extrae datos de una o más tablas y (opcionalmente) realiza transformaciones en esos datos.Los usuarios pueden consultar la vista como lo harían con cualquier tabla de base de datos real. Las vistas se utilizan a menudo para aliviar problemas de seguridad al proporcionar a los usuarios acceso a una determinada vista de una tabla de base de datos sin proporcionar acceso a la tabla subyacente.

0

Vistas relvars que contienen tuplas.

Los procedimientos almacenados son scripts.

Cuestiones relacionadas