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.
Leer las respuestas