Que tal, les queria hacer una consulta, talvez a alguno de ustedes les ha pasado, veran estoy haciendo un update mediante un while, el cual en esta tabla hay aprox 350000 registros. la cuestion es que segun los calculos que hice cada insert esta tardando aprox 1.8 - 2.5 segundos ya por todos los registros son como 150 horas, alguno me podria decir que estoy haciendo mal?
Código SQL:
Ver originalDECLARE @ciclo SMALLINT = 0
,@v_xp_codigo VARCHAR(MAX) = 0
,@v_nombre VARCHAR(MAX) = NULL
,@v_ponderacion VARCHAR(MAX) = 0
,@v_id BIGINT = 0
WHILE @ciclo = 0
BEGIN
SELECT TOP 1 @v_xp_codigo = query01.xp_codigo
,@v_nombre = query01.nombre
,@v_ponderacion = query01.Todos
,@v_id = query01.ID
FROM (
SELECT xp_codigo
, nombre
, Todos
, ID
FROM #temp_segmentacion WITH(NOLOCK)
) AS query01
WHERE query01.ID > @v_id
ORDER BY query01.ID ASC
-- Termina Ciclo
IF @@rowcount=0
BEGIN
SET @ciclo=1
--SELECT @ciclo
END
ELSE -- update
BEGIN
DECLARE @i_update nvarchar(MAX)=NULL
SELECT @i_update = 'UPDATE #temp_segmentacion
SET [' +@v_nombre+ '] = '+@v_ponderacion+'
WHERE xp_codigo = ' + @v_xp_codigo
EXECUTE sp_executesql @i_update
END
END
alguna forma de optimizar esta consulta o alguna solucion?
muchas gracias por su ayuda.
Saludos