Duda sobre vistas

28/04/2004 - 13:45 por Naimps | Informe spam
Buenas.

Si creo una vista y luego la consulto, ¿realiza un bloqueo igual que el
SELECT?

Preguntas similare

Leer las respuestas

#6 Maximiliano D. A.
28/04/2004 - 22:24 | Informe spam
Hola, como cualquier tabla :-), o por medio del Query de Microsoft o si uso
VBA pongo

Select campos from vista where condicion


;-)


Salu2
Maxi

Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET

MSN:
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"ONIL@" escribió en el mensaje
news:%

Hola Maximiliano!
Podrias decirme como llamas a tu vista desde Excel..

Gracias..!
(\__/)
(=':'=)
(")_(")

MX.

"Maximiliano D. A." wrote in


message
news:
> Hola amigo, aca coincido con Carlos y Ulises, para mi una vista es un
> copy-paste de un Query donde me permite:
>
> 1) Aumentar la seguridad
> 2) Encapsular codigo
> 3) Hacer mas simples mis Querys del lado del cliente o si lo llamo


desde
un
> Store.
>
> Es verdad que es un objeto, en Sql todo es un objeto ;-), porque usar
las
> vistas? ya mencione creo sus ventajas yo te voy a dar un caso real


mio.
>
> Aca tengo una consulta muy grande (15 tablas) que usamos para el


control
de
> produccion, hacer esto en un Query es tremendo de verdad, entonces
armamos
> una vista y luego por ej en un Excel llamo a esa vista, con esto
simplifico
> mucho todo y el cliente no tiene ni la menor idea de que cosas estan
tras
> esa vista
>
> En otras palabras ayudan mucho a simplificar las cosas y aumentan la
> seguridad, ya que ahora a mis usuarios les doy acceso a la vista y no


a
las
> tablas :-)
>
> Suerte
>
>
> Salu2
> Maxi
>
> Buenos Aires Argentina
> Desarrollador Microsoft 3 Estrellas .NET
>
> MSN:
> Nunca consideres el estudio como una obligación sino como
> una oportunidad para penetrar en el bello y maravillosos
> mundo del saber.
> - Albert Einstein
>
>
>
> "Isaías" escribió en el mensaje
> news:587a01c42d3d$b98f0770$
> Hola Carlos
>
> No estoy muy de acuerdo con tu comentario cuando
> dices: "generar el query que tiene en la
> definicion de la misma", porque entonces me genera la duda
> de ¿Para que generar vistas?, digo, si de todos modos va a
> contruir exactamente el mismo SELECT que construye (¿?) a
> la vista.
>
> Creo que una vista es algo mas, es un arreglo logico de
> los datos y que estan siempre presentes, ya que es un
> OBJETO de la base de datos.
>
> No quisiera entrar en polemica, pero si me gustaria leer
> mas comentarios al respecto.
>
> Saludos.
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.661 / Virus Database: 424 - Release Date: 20/04/2004
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.661 / Virus Database: 424 - Release Date: 20/04/2004
Respuesta Responder a este mensaje
#7 ONIL
29/04/2004 - 00:04 | Informe spam
Hola Maximiliano!
Podrias decirme como llamas a tu vista desde Excel..

Gracias..!
(\__/)
(=':'=)
(")_(")

MX.

"Maximiliano D. A." wrote in message
news:
Hola amigo, aca coincido con Carlos y Ulises, para mi una vista es un
copy-paste de un Query donde me permite:

1) Aumentar la seguridad
2) Encapsular codigo
3) Hacer mas simples mis Querys del lado del cliente o si lo llamo desde


un
Store.

Es verdad que es un objeto, en Sql todo es un objeto ;-), porque usar


las
vistas? ya mencione creo sus ventajas yo te voy a dar un caso real mio.

Aca tengo una consulta muy grande (15 tablas) que usamos para el control


de
produccion, hacer esto en un Query es tremendo de verdad, entonces


armamos
una vista y luego por ej en un Excel llamo a esa vista, con esto


simplifico
mucho todo y el cliente no tiene ni la menor idea de que cosas estan


tras
esa vista

En otras palabras ayudan mucho a simplificar las cosas y aumentan la
seguridad, ya que ahora a mis usuarios les doy acceso a la vista y no a


las
tablas :-)

Suerte


Salu2
Maxi

Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET

MSN:
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Isaías" escribió en el mensaje
news:587a01c42d3d$b98f0770$
Hola Carlos

No estoy muy de acuerdo con tu comentario cuando
dices: "generar el query que tiene en la
definicion de la misma", porque entonces me genera la duda
de ¿Para que generar vistas?, digo, si de todos modos va a
contruir exactamente el mismo SELECT que construye (¿?) a
la vista.

Creo que una vista es algo mas, es un arreglo logico de
los datos y que estan siempre presentes, ya que es un
OBJETO de la base de datos.

No quisiera entrar en polemica, pero si me gustaria leer
mas comentarios al respecto.

Saludos.



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.661 / Virus Database: 424 - Release Date: 20/04/2004


Respuesta Responder a este mensaje
#8 ONIL
29/04/2004 - 02:57 | Informe spam
Vientos..!
Gracias..
(\__/)
(=':'=)
(")_(")

MX.
"Maximiliano D. A." wrote in message
news:%
Hola, como cualquier tabla :-), o por medio del Query de Microsoft o si


uso
VBA pongo

Select campos from vista where condicion


;-)


Salu2
Maxi

Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET

MSN:
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"ONIL@" escribió en el mensaje
news:%
>
> Hola Maximiliano!
> Podrias decirme como llamas a tu vista desde Excel..
>
> Gracias..!
> (\__/)
> (=':'=)
> (")_(")
>
> MX.
>
> "Maximiliano D. A." wrote in
message
> news:
> > Hola amigo, aca coincido con Carlos y Ulises, para mi una vista es


un
> > copy-paste de un Query donde me permite:
> >
> > 1) Aumentar la seguridad
> > 2) Encapsular codigo
> > 3) Hacer mas simples mis Querys del lado del cliente o si lo llamo
desde
> un
> > Store.
> >
> > Es verdad que es un objeto, en Sql todo es un objeto ;-), porque


usar
> las
> > vistas? ya mencione creo sus ventajas yo te voy a dar un caso real
mio.
> >
> > Aca tengo una consulta muy grande (15 tablas) que usamos para el
control
> de
> > produccion, hacer esto en un Query es tremendo de verdad, entonces
> armamos
> > una vista y luego por ej en un Excel llamo a esa vista, con esto
> simplifico
> > mucho todo y el cliente no tiene ni la menor idea de que cosas


estan
> tras
> > esa vista
> >
> > En otras palabras ayudan mucho a simplificar las cosas y aumentan


la
> > seguridad, ya que ahora a mis usuarios les doy acceso a la vista y


no
a
> las
> > tablas :-)
> >
> > Suerte
> >
> >
> > Salu2
> > Maxi
> >
> > Buenos Aires Argentina
> > Desarrollador Microsoft 3 Estrellas .NET
> >
> > MSN:
> > Nunca consideres el estudio como una obligación sino como
> > una oportunidad para penetrar en el bello y maravillosos
> > mundo del saber.
> > - Albert Einstein
> >
> >
> >
> > "Isaías" escribió en el


mensaje
> > news:587a01c42d3d$b98f0770$
> > Hola Carlos
> >
> > No estoy muy de acuerdo con tu comentario cuando
> > dices: "generar el query que tiene en la
> > definicion de la misma", porque entonces me genera la duda
> > de ¿Para que generar vistas?, digo, si de todos modos va a
> > contruir exactamente el mismo SELECT que construye (¿?) a
> > la vista.
> >
> > Creo que una vista es algo mas, es un arreglo logico de
> > los datos y que estan siempre presentes, ya que es un
> > OBJETO de la base de datos.
> >
> > No quisiera entrar en polemica, pero si me gustaria leer
> > mas comentarios al respecto.
> >
> > Saludos.
> >
> >
> >
> > Outgoing mail is certified Virus Free.
> > Checked by AVG anti-virus system (http://www.grisoft.com).
> > Version: 6.0.661 / Virus Database: 424 - Release Date: 20/04/2004
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.661 / Virus Database: 424 - Release Date: 20/04/2004


Respuesta Responder a este mensaje
#9 Jose Mariano Alvarez \(MUG\)
29/04/2004 - 06:30 | Informe spam
Comparto algunas de las opiniones y otras no tanto
Los bloqueos de lectura se producen como en cualquier select a menos que los
impidas con nolock o isolation level, etc

Yo veo a la vista como "la definición" de una tabla derivada a menos que la
materialicemos, en cuyo caso aparecen unas cuantas restricciones más (como
el tema de las funciones deterministas por ejemplo) y en ese caso puede que
se parezcan más a consultas estáticas o creación automatica de nuevas
tablas.
Ahora, la vista "tradicional" al ser una definición simplemente hace que las
tablas que se usan en la misma, pasen a ser una parte más de la consulta que
la usa y entonces el plan y la forma de uso de las tablas base no se
prefijan al momento de la creación de la vista sino que en el momento de la
consulta se determina cual es la mejor alternativa (juntando todo).
Bueno, también esta el tema de actualizar las vistas, el tema de el uso de
vistas por seguridad, etc.


Pueden probar esto creando varios índices para ver como cambian
drásticamente los planes.

create view V_Prueba
as
select
O.OrderID,
O.CustomerID,
O.EmployeeID,
O.OrderDate,
O.RequiredDate,
D.ProductID,
D.UnitPrice,
D.Quantity,
D.Discount * D.UnitPrice * D.Quantity Discount
from Northwind.dbo.[Order Details] D
join Northwind.dbo.Orders O
on O.OrderID = D.OrderID
where OrderDate > '19980101'

StmtText
select * from V_Prueba where ProductID = 45

(1 row(s) affected)

StmtText
-
-
-
|--Compute Scalar(DEFINE:([Expr1004]=[Order
Details].[Discount]*Convert([Order Details].[UnitPrice])*Convert([Order
Details].[Quantity])))
|--Nested Loops(Inner Join, OUTER REFERENCES:([Order
Details].[OrderID]) WITH PREFETCH)
|--Bookmark Lookup(BOOKMARK:([Bmk1000]),
OBJECT:([Northwind].[dbo].[Order Details]))
| |--Index Seek(OBJECT:([Northwind].[dbo].[Order
Details].[ProductID]), SEEK:([Order Details].[ProductID]=Convert([@1]))
ORDERED FORWARD)
|--Clustered Index
Seek(OBJECT:([Northwind].[dbo].[Orders].[PK_Orders]),
SEEK:([Orders].[OrderID]=[Order Details].[OrderID]),
WHERE:([Orders].[OrderDate]>'Jan 1 1998 12:00AM') ORDERED FORWARD)

(5 row(s) affected)

StmtText
-
-

select
V.* , E.LastName + ', ' + E.FirstName
from V_Prueba V
join dbo.Employees E
on E.EmployeeID = V.EmployeeID
where ProductID = 45

(1 row(s) affected)

StmtText
-
-

|--Compute Scalar(DEFINE:([Expr1005]=[Order
Details].[Discount]*Convert([Order Details].[UnitPrice])*Convert([Order
Details].[Quantity]), [Expr1006]=[E].[LastName]+', '+[E].[FirstName]))
|--Nested Loops(Inner Join, OUTER REFERENCES:([Orders].[EmployeeID]))
|--Nested Loops(Inner Join, OUTER REFERENCES:([Order
Details].[OrderID]) WITH PREFETCH)
| |--Bookmark Lookup(BOOKMARK:([Bmk1000]),
OBJECT:([Northwind].[dbo].[Order Details]))
| | |--Index Seek(OBJECT:([Northwind].[dbo].[Order
Details].[ProductID]), SEEK:([Order Details].[ProductID]E) ORDERED
FORWARD)
| |--Clustered Index
Seek(OBJECT:([Northwind].[dbo].[Orders].[PK_Orders]),
SEEK:([Orders].[OrderID]=[Order Details].[OrderID]),
WHERE:([Orders].[OrderDate]>'Jan 1 1998 12:00AM') ORDERED FORWARD)
|--Clustered Index
Seek(OBJECT:([Northwind].[dbo].[Employees].[PK_Employees] AS [E]),
SEEK:([E].[EmployeeID]=[Orders].[EmployeeID]) ORDERED FORWARD)

(7 row(s) affected)

StmtText
-

select
V.* , E.LastName + ', ' + E.FirstName
from V_Prueba V
join dbo.Employees E
on E.EmployeeID = V.EmployeeID
where V.EmployeeID > 4

(1 row(s) affected)

StmtText
-
-
-
|--Compute Scalar(DEFINE:([Expr1005]=[Order
Details].[Discount]*Convert([Order Details].[UnitPrice])*Convert([Order
Details].[Quantity]), [Expr1006]=[E].[LastName]+', '+[E].[FirstName]))
|--Nested Loops(Inner Join, OUTER REFERENCES:([Orders].[OrderID]))
|--Nested Loops(Inner Join, OUTER
REFERENCES:([Orders].[EmployeeID]))
| |--Clustered Index
Scan(OBJECT:([Northwind].[dbo].[Orders].[PK_Orders]),
WHERE:([Orders].[OrderDate]>'Jan 1 1998 12:00AM' AND
[Orders].[EmployeeID]>4))
| |--Clustered Index
Seek(OBJECT:([Northwind].[dbo].[Employees].[PK_Employees] AS [E]),
SEEK:([E].[EmployeeID]=[Orders].[EmployeeID]) ORDERED FORWARD)
|--Clustered Index Seek(OBJECT:([Northwind].[dbo].[Order
Details].[PK_Order_Details]), SEEK:([Order
Details].[OrderID]=[Orders].[OrderID]) ORDERED FORWARD)

(6 row(s) affected)

NOTA:
Puede que los planes no sean iguales a los vuestros ya que creo que mi base
northwind tiene algunos ìndices que cree para las demos que doy.




Revisado por AVG

Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.672 / Virus Database: 434 - Release Date: 29/04/2004
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida