Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Vistas - Pueden afectar el rendimiento??? (https://www.clubdelphi.com/foros/showthread.php?t=64376)

Cheerpipe 29-03-2009 18:58:03

Vistas - Pueden afectar el rendimiento???
 
Hola.

Tengo la siguiente duda, supongo que la respuesta variara segun el motor de base de datos a utilizar, por lo que no especificare alguno para que cualquiera pueda contestar libremente.

Como saben, las Vistas en una db no es mas que una plantilla de una consulta SELECT usada basicamente para comodidad o bien para restringir la visibilidad de los datos. Mi inquierud apunta directamente al rendimiento de una vista, especificamente vistas grandes.

Imaginen el siguiente caso. Existe una consulta SQL con varias condiciones de busqueda (WHERE) que permite la obtencion de registros en una tabla con miles y miles y miles de registros. En el caso del select, la consulta rescatara directamente los registros que cumplan la condicion. ¿Pero que pasa si encapsulo la consulta SELECT en una vista? Obviamente al hacer esto, tendria que eliminar el WHERE de la vista, ya que las condiciones de busqueda tendria que aplicarlas a la ejecucion de la vista, en este caso al ejecutar una consulta a la vista. ¿La vista leeria todos los miles y miles de registros de la tabla sobre la cual se ejecuta la vista, y luego se aplicarian las condiciones de busqueda?, de ser asi ¿Eso no supondria que el uso de vistas significaria en mayor trabajo para el servidor?.

Espero haber podido explicarme bien, normalmente no soy bueno dandome a entender :(.

Saludos y gracias de antemano.

droguerman 30-03-2009 17:47:28

He trabajado con vistas en SQL Server 2000 y eran terriblemente lentas, aunque con SQL 2005 ha mejorado un poco la cosa.

nuk3zito 01-04-2009 07:23:24

Cita:

Empezado por droguerman (Mensaje 343189)
He trabajado con vistas en SQL Server 2000 y eran terriblemente lentas, aunque con SQL 2005 ha mejorado un poco la cosa.

Es raro que te parecieran lentas... seguramente si usabas joins no tenías bien definidos tus índices. En lo particular no he tenido problemas de lentitud con vistas que usan joins complejos.

Neftali [Germán.Estévez] 01-04-2009 09:20:14

Cita:

Empezado por Cheerpipe (Mensaje 343127)
Existe una consulta SQL con varias condiciones de busqueda (WHERE) que permite la obtencion de registros en una tabla con miles y miles y miles de registros. En el caso del select, la consulta rescatara directamente los registros que cumplan la condicion. ¿Pero que pasa si encapsulo la consulta SELECT en una vista? Obviamente al hacer esto, tendria que eliminar el WHERE de la vista, ya que las condiciones de busqueda tendria que aplicarlas a la ejecucion de la vista, en este caso al ejecutar una consulta a la vista. ¿La vista leeria todos los miles y miles de registros de la tabla sobre la cual se ejecuta la vista, y luego se aplicarian las condiciones de busqueda?, de ser asi ¿Eso no supondria que el uso de vistas significaria en mayor trabajo para el servidor?

Para casos como estos talvez deberías "tirar" hacia StoresProcs o Funciones.


La franja horaria es GMT +2. Ahora son las 17:38:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi