20 minutos es demasiado para ese volumen de registrosPonele indices a la
temporal.


--------------------------------
Atte.
Ing. Jose Mariano Alvarez
SQL Total Consulting


2008/9/10 Ignacio Ayerbe <[EMAIL PROTECTED]>

> El Sp es más complejo, está muy optimizado a nivel que no se usan cursores,
> todas las tablas tienen índices, etc. Para mí el tema viene por otro lado, a
> nosotros no nos importa mucho que tarde 20 minutos, sino que ¿Por qué desde
> el Query Analyzer finaliza y desde una aplicación que lo único que hace es
> ejecutar el SP, el servidor SQL se queda procesando indefinidamente? (ya
> verificamos que el problema no es del programa porque el que se queda
> procesando y nunca retorna de la ejecución es el SQL)
>
>
> -----Mensaje original-----
> De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Maxi Accotto
> Enviado el: Miércoles, 10 de Septiembre de 2008 11:15 a.m.
> Para: Ignacio Ayerbe
> Asunto: [dbms] Consulta sobre Performance de SP
>
> Hola, 20 min? una locura de tiempo!! pensa porque usas la temporal?
> que hace el proceso? necesita retornar luego datos al usuario? que
> haces luego con esa temporal?
>
> El día 10 de septiembre de 2008 10:57, Ignacio Ayerbe
> <[EMAIL PROTECTED]> escribió:
> > Me acaban de decir algo realmente importante que no sabía, me dijeron que
> > este SP ejecutado con el Query Analyzer tarda 20 minutos, pero con la
> > aplicación .NET (utilizando ADO.NET) se queda indefinidamente. Entonces,
> > como se está usando un String de Conexión a la Base de Datos normal,
> ¿podría
> > ser que el String necesite algún otro parámetro especial?
> >
> >
> >
> >
> >
> > De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Jose Mariano
> > Alvarez
> > Enviado el: Miércoles, 10 de Septiembre de 2008 10:42 a.m.
> >
> > Para: Ignacio Ayerbe
> > Asunto: [dbms] Consulta sobre Performance de SP
> >
> >
> >
> > 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.
> >
> >
> >
> >
>
>
>
> --
> -----------------------------------------------------------
> Microsoft MVP en SQL Server
> Consultor en SQLTotalConsulting
> Excelencia en servicios y consultoria SQLServer
> www.sqltotalconsulting.com
> -----------------------------------------------------------
>
>
>

Responder a