Por favor, ayuda optimización de una consulta

26/09/2007 - 09:46 por Javi | Informe spam
Hola,
llevo mucho tiempo intentando mejorar esta consulta. Se me han acabado
las ideas.
No se que camino seguir para intentar mejorar esta consulta.


ALTER PROCEDURE UPDATE_PESO_TANQUES
@id_program as bigint,
@diaI as datetime,
@diaF as datetime,
@diaFR as datetime
AS



UPDATE iTANQUE
SET iTANQUE.INV_PESO = (iTANQUE.INV_PESO - mvs.TmTotales)
FROM
(SELECT INV_FECHA,Id_program, TUND_COD, UND_COD,
SUM(STK_TM) AS TmTotales
FROM RAP_MOV_STOCK
WHERE (INV_FECHA = @diaI ) AND (Id_program = @id_program)
AND (MOV_TIP = 'S') AND
(MOV_COD = 'CU')
GROUP BY INV_FECHA, Id_program ,TUND_COD, UND_COD) mvs
INNER JOIN
RAP_INV_TANQUE iTANQUE ON
iTANQUE.id_program = mvs.id_program AND
iTANQUE.tund_cod = mvs.tund_cod AND
iTANQUE.und_cod = mvs.und_cod
WHERE iTANQUE.INV_FECHA between @diaI and @diaFR





Hago una inner join para formar una tabla que luego le paso al update
principal. La idea para formar
esta tabla "mvs" es agrupar los registros y averiguar ls TmTotales que
luego utiliza el update
para actualizar tanque a tanque.

Necesito optimizar esta consulta porque es muy pesada y se ejecuta
muchas veces.
Los "wheres" están en orden con los índices de cada tabla...



Muchas gracias,
Javi.

Preguntas similare

Leer las respuestas

#1 Maxi
26/09/2007 - 16:59 | Informe spam
Javi, yo no veo nada grosero en esta consulta que pueda afectarle la
performance, usted ha analizado los planes de ejecucion para detectar el
problema?


Salu2

Microsoft MVP SQL Server
Culminis Speaker
www.sqltotalconsulting.com

"Javi" escribió en el mensaje
news:%

Hola,
llevo mucho tiempo intentando mejorar esta consulta. Se me han acabado
las ideas.
No se que camino seguir para intentar mejorar esta consulta.


ALTER PROCEDURE UPDATE_PESO_TANQUES
@id_program as bigint,
@diaI as datetime,
@diaF as datetime,
@diaFR as datetime
AS



UPDATE iTANQUE
SET iTANQUE.INV_PESO = (iTANQUE.INV_PESO - mvs.TmTotales)
FROM
(SELECT INV_FECHA,Id_program, TUND_COD, UND_COD,
SUM(STK_TM) AS TmTotales
FROM RAP_MOV_STOCK
WHERE (INV_FECHA = @diaI ) AND (Id_program = @id_program)
AND (MOV_TIP = 'S') AND
(MOV_COD = 'CU')
GROUP BY INV_FECHA, Id_program ,TUND_COD, UND_COD) mvs
INNER JOIN
RAP_INV_TANQUE iTANQUE ON
iTANQUE.id_program = mvs.id_program AND
iTANQUE.tund_cod = mvs.tund_cod AND
iTANQUE.und_cod = mvs.und_cod
WHERE iTANQUE.INV_FECHA between @diaI and @diaFR





Hago una inner join para formar una tabla que luego le paso al update
principal. La idea para formar
esta tabla "mvs" es agrupar los registros y averiguar ls TmTotales que
luego utiliza el update
para actualizar tanque a tanque.

Necesito optimizar esta consulta porque es muy pesada y se ejecuta
muchas veces.
Los "wheres" están en orden con los índices de cada tabla...



Muchas gracias,
Javi.










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