Una vista representa una tabla virtual . Puede unir varias tablas en una vista y usar la vista para presentar los datos como si los datos vinieran de una sola tabla.
Un procedimiento almacenado utiliza parámetros para realizar una función ... ya sea actualizar e insertar datos, o devolver valores individuales o conjuntos de datos.
Creación de vistas y procedimientos almacenados : tiene información de Microsoft sobre cuándo y por qué usar cada uno.
Digamos que tengo dos tablas:
tbl_user
, Con columnas: user_id
, user_name
,user_pw
tbl_profile
, Con columnas: profile_id
, user_id
,profile_description
Entonces, si me encuentro consultando desde esas tablas MUCHO ... en lugar de hacer la unión en CADA pieza de SQL, definiría una vista como:
CREATE VIEW vw_user_profile
AS
SELECT A.user_id, B.profile_description
FROM tbl_user A LEFT JOIN tbl_profile B ON A.user_id = b.user_id
GO
Por lo tanto, si quiero consulta profile_description
por user_id
en el futuro, todo lo que tengo que hacer es:
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
Ese código podría usarse en un procedimiento almacenado como:
CREATE PROCEDURE dbo.getDesc
@ID int
AS
BEGIN
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
END
GO
Entonces, más tarde, puedo llamar:
dbo.getDesc 25
y obtendré la descripción de user_id
25, donde 25
es tu parámetro.
Obviamente hay muchos más detalles, esta es solo la idea básica.
Mucha información disponible aquí
Aquí hay un buen resumen:
Un procedimiento almacenado:
Una vista:
fuente
Primero debes entender que ambas son cosas diferentes.
Stored Procedures
se usan mejor paraINSERT-UPDATE-DELETE
declaraciones. Mientras queViews
se utilizan paraSELECT
declaraciones. Deberías usar ambos.En las vistas no puede alterar los datos.Algunas bases de datos tienen vistas actualizables donde se puede utilizarINSERT-UPDATE-DELETE
enViews
.fuente
Una vista SQL es una tabla virtual, que se basa en la consulta SQL SELECT. Una vista hace referencia a una o más tablas de bases de datos existentes u otras vistas. Es la instantánea de la base de datos, mientras que un procedimiento almacenado es un grupo de instrucciones Transact-SQL compiladas en un solo plan de ejecución.
Ver es simple mostrar datos almacenados en las tablas de la base de datos, mientras que un procedimiento almacenado es un grupo de declaraciones que se pueden ejecutar.
Una vista es más rápida ya que muestra datos de las tablas a las que se hace referencia, mientras que un procedimiento de tienda ejecuta sentencias SQL.
Consulte este artículo: Ver vs Procedimientos almacenados . Exactamente lo que buscas
fuente
Una vista es una forma sencilla de guardar un complejo
SELECT
en la base de datos.Se utiliza un procedimiento de almacenamiento cuando el SQL simple simplemente no es suficiente. Los procedimientos de almacenamiento contienen variables, bucles y llamadas a otros procedimientos almacenados. Es un lenguaje de programación, no un lenguaje de consulta.
Las vistas son estáticas. Piense en ellas como nuevas tablas con un cierto diseño y los datos que contienen se crean sobre la marcha utilizando la consulta con la que lo creó. Como con cualquier tabla SQL, puede ordenarla y filtrarla con
WHERE
,GROUP BY
yORDER BY
.Depende de lo que hagas.
El depende de la base de datos. Las vistas simples solo ejecutan la consulta y filtran el resultado. Pero las bases de datos como Oracle permiten crear una vista "materializada" que es básicamente una tabla que se actualiza automáticamente cuando cambian los datos subyacentes de la vista.
Una vista materializada le permite crear índices en las columnas de la vista (especialmente en las columnas calculadas que no existen en ninguna parte de la base de datos).
No entiendo de qué estás hablando.
fuente
Además de los comentarios anteriores, me gustaría agregar algunos puntos sobre Vistas.
fuente
fuente
Mahesh no es del todo correcto cuando sugiere que no se pueden alterar los datos en una vista. Entonces con la opinión de patrick
PUEDO actualizar los datos ... como ejemplo, puedo hacer cualquiera de estos ...
o
No puede INSERTAR en esta vista, ya que no todos los campos de toda la tabla están presentes y supongo que PROFILE_ID es la clave principal y no puede ser NULL. Sin embargo, a veces puede INSERTAR en una vista ...
Creé una vista en una tabla existente usando ...
LUEGO
y
Tanto el INSERT como el DELETE funcionaron en este caso
Obviamente, no puede actualizar ningún campo que se agregue o calcule, pero cualquier vista que sea solo una vista directa debería ser actualizable.
Si la vista contiene más de una tabla, no puede insertarla ni eliminarla, pero si la vista es un subconjunto de una sola tabla, generalmente puede hacerlo.
fuente
La principal diferencia es que cuando consulta una vista, su definición se pega en su consulta. El procedimiento también podría dar resultados de la consulta, pero se compila y es más rápido. Otra opción son las vistas indexadas.
fuente
@Patrick está en lo correcto con lo que dijo, pero para responder a sus otras preguntas, una Vista se creará en la Memoria, y dependiendo del tipo de Uniones, Datos y, si se realiza alguna agregación, podría ser una Vista con mucha memoria.
Los procedimientos almacenados realizan todo su procesamiento utilizando Temp Hash Table, por ejemplo, # tmpTable1 o en la memoria utilizando @ tmpTable1. Dependiendo de lo que quieras decirle que haga.
Un procedimiento almacenado es como una función, pero se llama directamente por su nombre. en lugar de funciones que realmente se usan dentro de una consulta.
Obviamente, la mayoría de las veces las tablas de memoria son más rápidas, si no está recuperando una gran cantidad de datos.
fuente