Ayuda!!! Cursos tarda demasiado

the boss
23 de Mayo del 2006
Gente,

urgente. Este cursor me tarda mucho. ¿Se os ocurre algo para optimizarla?

DECLARE @IDPADRE VARCHAR(50)

DECLARE @EDAD INT



DECLARE CUR_PADRE CURSOR FOR SELECT DISTINCT COD_SOCIO FROM dbo.HIJOS ORDER BY COD_SOCIO



OPEN CUR_PADRE



FETCH NEXT FROM CUR_PADRE INTO @IDPADRE



WHILE @@FETCH_STATUS = 0

BEGIN

IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_NAME = \\'TEMP_PADRE_HIJOS_NEW\\')

DROP TABLE TEMP_PADRE_HIJOS_NEW





SELECT IDENTITY(INT,1,1) AS ORDEN, EDAD

INTO TEMP_PADRE_HIJOS_NEW

FROM HIJOS

WHERE COD_SOCIO = @IDPADRE

ORDER BY EDAD







UPDATE DBO.FICHERO_MODELIZACION_NEW

SET

EDAD_HIJO_1 = B.EDAD,

EDAD_HIJO_2 = C.EDAD,

EDAD_HIJO_3 = D.EDAD,

EDAD_HIJO_4 = E.EDAD,

EDAD_HIJO_5 = F.EDAD,

EDAD_HIJO_6 = G.EDAD,

EDAD_HIJO_7 = H.EDAD,

EDAD_HIJO_8 = I.EDAD

FROM

DBO.FICHERO_MODELIZACION_NEW AS A

LEFT JOIN TEMP_PADRE_HIJOS_NEW AS B

ON B.ORDEN = 1

LEFT JOIN TEMP_PADRE_HIJOS_NEW AS C

ON C.ORDEN = 2

LEFT JOIN TEMP_PADRE_HIJOS_NEW AS D

ON D.ORDEN = 3

LEFT JOIN TEMP_PADRE_HIJOS_NEW AS E

ON E.ORDEN = 4

LEFT JOIN TEMP_PADRE_HIJOS_NEW AS F

ON F.ORDEN = 5

LEFT JOIN TEMP_PADRE_HIJOS_NEW AS G

ON G.ORDEN = 6

LEFT JOIN TEMP_PADRE_HIJOS_NEW AS H

ON H.ORDEN = 7

LEFT JOIN TEMP_PADRE_HIJOS_NEW AS I

ON I.ORDEN = 8

WHERE

A.COD_SOCIO_INT = CAST(@IDPADRE AS BIGINT)



FETCH NEXT FROM CUR_PADRE INTO @IDPADRE

END



CLOSE CUR_PADRE



DEALLOCATE CUR_PADRE