rendimientos vistas

29/01/2004 - 10:47 por Racsus | Informe spam
Hola

tenemos una BD con varias tablas relacionadas: oficinas,
clientes y contratos.

En muchos de los mantenimientos se necesitan sacar listas
con datos de clientes, oficinas o contratos y para ello
hemos de recorrer varias de las tablas para sacar los
datos necesarios.

Para evitar el recorrer tantas tablas que es mejor:

1)Usar una tabla intermedia como Clientes-Contratos,
Clientes-Oficinas,... donde rellenamos solo los clientes
que tiene contrato, sólo los clientes que tienen
oficina,... de esta forma ya no tenemos que acudir a otras
tablas para ver los clientes que tienen o no tiene
contrato.

2) Crear una vista en Sql Server Clientes-Contratos,
Clientes-Oficinas... de esta manera no tendremos que estar
alimentando esta tabla desde código; pero y los
rendimientos? seran iguales que ejecutar el codigo sql
desde la aplicación? que ventajas tienen las vistas? las
vistas se autoalimentan sólas? cuando llamamos a la vista
tarda lo mismo que si llamaramos al código sql de la
consulta?

Gracias

Preguntas similare

Leer las respuestas

#1 ulises
29/01/2004 - 15:49 | Informe spam
Si puedes obtener los datos desde una tabla o de una
vista, siempre es más rápido obtenerla de la tabla misma,
pero ten en consideración que bajo tu esquema estarías
afectando la performance de tu ingreso ya que por cada una
de ellas tendrías que actualizar la tablas de clientes-
contratos y clientes-oficinas, habría que probar que es lo
más eficiente. Asimismo también podrías considerar
utilizar un stored procedure en lugar de vistas ya que
podrías parametrizarlas de acuerdo a lo que deseas obtener.

Saludos,
Ulises

Hola

tenemos una BD con varias tablas relacionadas: oficinas,
clientes y contratos.

En muchos de los mantenimientos se necesitan sacar listas
con datos de clientes, oficinas o contratos y para ello
hemos de recorrer varias de las tablas para sacar los
datos necesarios.

Para evitar el recorrer tantas tablas que es mejor:

1)Usar una tabla intermedia como Clientes-Contratos,
Clientes-Oficinas,... donde rellenamos solo los clientes
que tiene contrato, sólo los clientes que tienen
oficina,... de esta forma ya no tenemos que acudir a


otras
tablas para ver los clientes que tienen o no tiene
contrato.

2) Crear una vista en Sql Server Clientes-Contratos,
Clientes-Oficinas... de esta manera no tendremos que


estar
alimentando esta tabla desde código; pero y los
rendimientos? seran iguales que ejecutar el codigo sql
desde la aplicación? que ventajas tienen las vistas? las
vistas se autoalimentan sólas? cuando llamamos a la vista
tarda lo mismo que si llamaramos al código sql de la
consulta?

Gracias
.
Respuesta Responder a este mensaje
#2 Jose Mariano Alvarez \(MUG\)
30/01/2004 - 09:38 | Informe spam
En general en tiempo es practicamente lo mismo acceder por la vista o
directamente.
En ocasiones la vista es mas rapida, sobre todo si tiene consideraciones que
descartan registros "y ademas te las olvidas"

El SQL Server, no suele materializar la vista para recien aplicar el select
a menos que le convenga realizar un tabla derivada.
Por lo tanto suele tener el mismo costo , pero sobre todo es mas facil
escribirlo a partir de la vista.

Jose Mariano Alvarez
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar



"ulises" wrote in message
news:642301c3e677$202e0750$
Si puedes obtener los datos desde una tabla o de una
vista, siempre es más rápido obtenerla de la tabla misma,
pero ten en consideración que bajo tu esquema estarías
afectando la performance de tu ingreso ya que por cada una
de ellas tendrías que actualizar la tablas de clientes-
contratos y clientes-oficinas, habría que probar que es lo
más eficiente. Asimismo también podrías considerar
utilizar un stored procedure en lugar de vistas ya que
podrías parametrizarlas de acuerdo a lo que deseas obtener.

Saludos,
Ulises

Hola

tenemos una BD con varias tablas relacionadas: oficinas,
clientes y contratos.

En muchos de los mantenimientos se necesitan sacar listas
con datos de clientes, oficinas o contratos y para ello
hemos de recorrer varias de las tablas para sacar los
datos necesarios.

Para evitar el recorrer tantas tablas que es mejor:

1)Usar una tabla intermedia como Clientes-Contratos,
Clientes-Oficinas,... donde rellenamos solo los clientes
que tiene contrato, sólo los clientes que tienen
oficina,... de esta forma ya no tenemos que acudir a


otras
tablas para ver los clientes que tienen o no tiene
contrato.

2) Crear una vista en Sql Server Clientes-Contratos,
Clientes-Oficinas... de esta manera no tendremos que


estar
alimentando esta tabla desde código; pero y los
rendimientos? seran iguales que ejecutar el codigo sql
desde la aplicación? que ventajas tienen las vistas? las
vistas se autoalimentan sólas? cuando llamamos a la vista
tarda lo mismo que si llamaramos al código sql de la
consulta?

Gracias
.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida