Solo te podria servir crear un indice clustered en la temporar por los campos adecuados para evitar los sort intermedios y algunos table scans.
-------------------------------- Atte. Ing. Jose Mariano Alvarez SQL Total Consulting 2008/9/10 Ignacio Ayerbe <[EMAIL PROTECTED]> > Quizás me exprese mal con el tema de recorrer. Te paso más o menos lo que > hace: > > > > Creo una tabla temporal: > > > > create table #p1 (id_tipo_iden int, numero_iden > nvarchar(11),id_situacion_aplicar int, > id_situacion_cendeu int, id_situacion_entidad int) > > > > > > Luego hago un INSERT INTO sencillo: > > > > insert into #p1 > > select a.id_tipo_iden, > > a.numero_iden, > > … > > > > Y por ultimo ejecuto varios (28 en total) UPDATEs de este tipo: > > > > update #p1 > > set id_situacion_aplicar = 1 > > where id_situacion_entidad < id_situacion_cendeu > > and > > (id_situacion_cendeu = 21 or id_situacion_cendeu = 22) > > and > > id_situacion_entidad = 1 > > and > > @par83 = 0 > > and > > @par84 <> 0 > > > > > > Estos UPDATEs se aplican sobre la tabla temporal que posee 1.000.000 de > registros. Esta es la parte que se queda procesando y nunca finaliza. > > > > Saludos > > > > > > *De:* [email protected] [mailto:[EMAIL PROTECTED] *En nombre de *Jose Mariano > Alvarez > *Enviado el:* Martes, 09 de Septiembre de 2008 07:03 p.m. > *Para:* Ignacio Ayerbe > *Asunto:* [dbms] Consulta sobre Performance de SP > > > > Que significa recorrer? > > > > Pasanos el script de la tabla y los indices de la tabla que tiene el > update. > > También el update. > > > > Imagino que es un solo update por lo que cuentas. Es asi? > > > > saludos > > > -------------------------------- > Atte. > Ing. Jose Mariano Alvarez > SQL Total Consulting > > On Tue, Sep 9, 2008 at 17:28, Ignacio Ayerbe < > [EMAIL PROTECTED]> wrote: > > Buenos días Listeros. > > Tengo un problema con un Stored Procedure corriendo en un MSSQL > 2000, el tema es el siguiente: la base de datos pesa unos 12Gb y la tarea > que debe realizar el Stored Procedure es recorrer alrededor de 1.000.000 de > registros, meterlos en una tabla temporal y hacerles un Update a cada > registro (el update es sencillo, solo modifica un campo de la tabla > temporal). > El problema es que cuando ejecuto el proceso con 1.000 registros > tarda 0 seg., con 100.000 registros tarda 10 minutos y cuando lo ejecuto con > el 1.000.000 de registros directamente se queda como procesando y nunca > finaliza. > ¿Alguien tiene una idea de cómo solucionar esto? ¿Hay que tocar algo > en el servidor? ¿Qué tips me recomiendan para ejecutar acciones simples pero > en gran volumen? > > Saludos y agradezco cualquier ayuda al respecto. > > >
