ejecucion de un sp a cada llamada (select) de una tabla para refrescar esta

01/05/2006 - 15:45 por .·:m·a·r·l·a:·. | Informe spam
Hola a todos

tengo una vista en el server a la que le cuesta unos 4-5 minutos de
ejecucion. He provado a simular la vista mediante un sp y con variables
tabla y la cosa se transforma en unos pocos milisegundos...

asi que mi idea es sustiruir la vista por la tabla resultado del sp (tabla
real) y que esta se refrescara cada vez que es llamada (select) mediante el
sp en cuestion

asi, deveria de ejecutar el sp desde un triger select ??
es eso posible ??, recomendable ??

gracias por adelantado

Preguntas similare

Leer las respuestas

#1 Maxi [MVP]
01/05/2006 - 17:34 | Informe spam
Hola, la verdad que veo algunas confusiones tecnicas sobre bdd en tu
comentario.


Primero, las vistas no pueden llamar a SP, sino que podrian llamar a tablas,
si un sp genera una tabla entonces primero debes ejecutar el sp y luego la
vista, pero es muy feo esto, para lo que queres hacer vos tenes 2 opciones

1) Revisar porque la vista sin sp tarda tanto, debe ser un tema de indices
2) Usar en lugar de SP's funciones definidas por el usuario que retornen una
tabla, y esto si lo puedes poner dentro de la vista como si harias
referencia a una tabla
3) Usar solo SP o UDF y no usar vistas



Salu2
-
[Microsoft MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

".·:m·a·r·l·a:·." escribió en el mensaje
news:%23fQx%
Hola a todos

tengo una vista en el server a la que le cuesta unos 4-5 minutos de
ejecucion. He provado a simular la vista mediante un sp y con variables
tabla y la cosa se transforma en unos pocos milisegundos...

asi que mi idea es sustiruir la vista por la tabla resultado del sp (tabla
real) y que esta se refrescara cada vez que es llamada (select) mediante
el
sp en cuestion

asi, deveria de ejecutar el sp desde un triger select ??
es eso posible ??, recomendable ??

gracias por adelantado


Respuesta Responder a este mensaje
#2 .·:m·a·r·l·a:·.
02/05/2006 - 12:15 | Informe spam
perdon por mi forma de expresarme, el lenguaje SQLserver aun no me resulta
familiar del todo (autodidacta)

el problema reside en que la vista/tabla en cuestion tiene que ser llamada
por aplicacions tales como Acess or excel (data -> import data -> database
query) asi que, segun tengo entendido solo pueden ser llamadas vistas o
tablas (y no SPs)

la razon por la que tarda tanto en formato vista supongo que es por la
cantidad de vistas conectadas. Resumiendo lo que intento hacer, en varias
tablas busca el codigo de producto mas algunos valores agragados, y todo eso
lo tiene que mostrar en la misma tabla/vista; mostrando todos los productos
(esten definidos en una o en todas las tablas) y devolviendo un valor
alternativo en caso de no existir en cada tabla (0 o #null#)

ejemplo ::

tabla1

producto plantaProduction Coste
prod.A planta.A 12
prod.A planta.B 15
prod.B planta.A 20

tabla2

cliente producto ventas day

cliente1 prod.A 200€ ...
cliente1 prod.A 200€ ...
cliente2 prod.A 200€ ...
cliente1 prod.C 200€ ...


pues la salida deveria mostrar algo tal que ::

producto Count_dif_plantaProduction Avg_Coste Count_dif_Clientes
count_ventas Sum_ventas ...
-

prod.A 2 13.5 2 3
600€ ...
prod.B 1 20 0 0
#null# ...
prod.C 0 #null# 1 1
200€ ...



usando vistas utilizo 2:
- una auxiliar en la que hago una union de todas las tablas agrupando
por producto
- la principal en la que hago "left outher join" desde la auxiliar a
todas las tablas
que necesito obtener los valores agragados

usando un sp
- ejecuto las diferentes vistas agragadas (producto) sbre las diferentes
tablas
y las guardo en tablas variable
- hago la union de los productos desde estas tablas variables
- vacio y lleno la tabla destino haciendo "left outher join" de esta
segunda
tabla variable contra todas las primeras

asi de la primera forma necesita 4-5 minutos y la segunda solo unos
milisegundos (la razon puramente tecnica la desconozco)

y mi idea era que la tabla se autorefrescara (mediante el sp) cada vez que
fuera llamada (select from)

alguna idea ??
gracias por adelantado de nuevo







"Maxi [MVP]" wrote in message
news:
Hola, la verdad que veo algunas confusiones tecnicas sobre bdd en tu
comentario.


Primero, las vistas no pueden llamar a SP, sino que podrian llamar a


tablas,
si un sp genera una tabla entonces primero debes ejecutar el sp y luego la
vista, pero es muy feo esto, para lo que queres hacer vos tenes 2 opciones

1) Revisar porque la vista sin sp tarda tanto, debe ser un tema de indices
2) Usar en lugar de SP's funciones definidas por el usuario que retornen


una
tabla, y esto si lo puedes poner dentro de la vista como si harias
referencia a una tabla
3) Usar solo SP o UDF y no usar vistas



Salu2
-
[Microsoft MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

".·:m·a·r·l·a:·." escribió en el mensaje
news:%23fQx%
> Hola a todos
>
> tengo una vista en el server a la que le cuesta unos 4-5 minutos de
> ejecucion. He provado a simular la vista mediante un sp y con variables
> tabla y la cosa se transforma en unos pocos milisegundos...
>
> asi que mi idea es sustiruir la vista por la tabla resultado del sp


(tabla
> real) y que esta se refrescara cada vez que es llamada (select) mediante
> el
> sp en cuestion
>
> asi, deveria de ejecutar el sp desde un triger select ??
> es eso posible ??, recomendable ??
>
> gracias por adelantado
>
>


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