Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/01/2010, 09:27
Avatar de Andres95
Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Optimizar cursor

optimizar y cursor deben ser utilizados con cuidado en una misma sentencia

y solo como comentario: Programar un flujo en base a excepciones no es lo mejor en ninguna plataforma que yo conozca.. ya que es costoso el manejo de las mismas...


adicional... creo que tu proceso puede ser replanteado en tres pasos, creando previamente una tabla adicional para almacenar la info a procesar, seria algo mas o menos asi..

Código:
INSERT INTO MyNewTable (nId, sClassName)
SELECT id, ClassName
(
	select id, class0, class1, class2, class3, class4, class5, class6, class7, class8, class9 
	from total 
) Classes
UNPIVOT
   (ClassName FOR ClassColumn IN (class0, class1, class2, class3, class4, class5, class6, class7, class8, class9 )
)AS unpvt;


UPDATE     P
SET        P.cantidad = P.cantidad + 1 
FROM       procesado  P
INNER JOIN MyNewTable M
ON         ID = nId and 
           clase= sClassName


INSERT INTO procesado (id,clase,cantidad)
SELECT     P.nId
          ,P.sClassName
          ,1
FROM       MyNewTable M
LEFT JOIN procesado P
ON         ID = nId and 
           clase= sClassName
WHERE      P.Id is null
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.