OPTIMIZACIION DE QUERY (UN FAVOR)

18/10/2005 - 18:24 por cali | Informe spam
me piden aka en el trabajo que optimice este proceso de update de 1 solo
campo en mi tabla, el proceso dura casi 35 minutos, la tabla comprobante
tiene como 89000 filas y la tmp_pagos tiene como 90,000 es donde se
registran los comprobantes con sus respectivos pagos en una determinada
moneda, aki va el update

Update Comprobante
Set Montocancelado=Isnull((Case A.Monedaid
When 1 Then (Select Sum(Isnull(Z.monpag,0)) From TMP_PAGOS Z
Where Z.numdco=A.numero
and a.tipocomprobanteid=Z.tipdoc and z.serdco=a.serieid AND Z.TIPMON=1 )

When 2 Then (Select Sum(Isnull(Z.monpad,0)) From TMP_PAGOS Z
Where Z.numdco=A.numero
and a.tipocomprobanteid=Z.tipdoc and z.serdco=a.serieid AND Z.TIPMON=2 )
End),0)

From
Comprobante A

la verdad es que no le veo como optimizqarlo, asumo que el tiempo de demora
es por la cantidad de registros que hay, pero tampoco voy a tratar de
optimizar usando cursores.

a ver kien me da la mano

Preguntas similare

Leer las respuestas

#1 Maxi
17/10/2005 - 19:09 | Informe spam
Fijate los indices


Salu2
Maxi [MVP SQL SERVER]


"cali" <nada> escribió en el mensaje
news:

me piden aka en el trabajo que optimice este proceso de update de 1 solo
campo en mi tabla, el proceso dura casi 35 minutos, la tabla comprobante
tiene como 89000 filas y la tmp_pagos tiene como 90,000 es donde se
registran los comprobantes con sus respectivos pagos en una determinada
moneda, aki va el update

Update Comprobante
Set Montocancelado=Isnull((Case A.Monedaid
When 1 Then (Select Sum(Isnull(Z.monpag,0)) From TMP_PAGOS Z
Where Z.numdco=A.numero
and a.tipocomprobanteid=Z.tipdoc and z.serdco=a.serieid AND
Z.TIPMON=1 )

When 2 Then (Select Sum(Isnull(Z.monpad,0)) From TMP_PAGOS Z
Where Z.numdco=A.numero
and a.tipocomprobanteid=Z.tipdoc and z.serdco=a.serieid AND
Z.TIPMON=2 )
End),0)

From
Comprobante A

la verdad es que no le veo como optimizqarlo, asumo que el tiempo de
demora es por la cantidad de registros que hay, pero tampoco voy a tratar
de optimizar usando cursores.

a ver kien me da la mano


Respuesta Responder a este mensaje
#2 Maxi
17/10/2005 - 19:27 | Informe spam
pasame el plan de ejecucion de esta query


Salu2
Maxi [MVP SQL SERVER]


"cali" <nada> escribió en el mensaje
news:

la tabla de pagos tiene inidices en los 4 campos k tiene con fill factor
de 90%
y la de comprobante tiene campo identity


"Maxi" escribió en el mensaje
news:%

Fijate los indices


Salu2
Maxi [MVP SQL SERVER]


"cali" <nada> escribió en el mensaje
news:

me piden aka en el trabajo que optimice este proceso de update de 1 solo
campo en mi tabla, el proceso dura casi 35 minutos, la tabla
comprobante tiene como 89000 filas y la tmp_pagos tiene como 90,000 es
donde se registran los comprobantes con sus respectivos pagos en una
determinada moneda, aki va el update

Update Comprobante
Set Montocancelado=Isnull((Case A.Monedaid
When 1 Then (Select Sum(Isnull(Z.monpag,0)) From TMP_PAGOS Z
Where Z.numdco=A.numero
and a.tipocomprobanteid=Z.tipdoc and z.serdco=a.serieid AND
Z.TIPMON=1 )

When 2 Then (Select Sum(Isnull(Z.monpad,0)) From TMP_PAGOS Z
Where Z.numdco=A.numero
and a.tipocomprobanteid=Z.tipdoc and z.serdco=a.serieid AND
Z.TIPMON=2 )
End),0)

From
Comprobante A

la verdad es que no le veo como optimizqarlo, asumo que el tiempo de
demora es por la cantidad de registros que hay, pero tampoco voy a
tratar de optimizar usando cursores.

a ver kien me da la mano












Respuesta Responder a este mensaje
#3 cali
18/10/2005 - 19:12 | Informe spam
la tabla de pagos tiene inidices en los 4 campos k tiene con fill factor de
90%
y la de comprobante tiene campo identity


"Maxi" escribió en el mensaje
news:%

Fijate los indices


Salu2
Maxi [MVP SQL SERVER]


"cali" <nada> escribió en el mensaje
news:

me piden aka en el trabajo que optimice este proceso de update de 1 solo
campo en mi tabla, el proceso dura casi 35 minutos, la tabla comprobante
tiene como 89000 filas y la tmp_pagos tiene como 90,000 es donde se
registran los comprobantes con sus respectivos pagos en una determinada
moneda, aki va el update

Update Comprobante
Set Montocancelado=Isnull((Case A.Monedaid
When 1 Then (Select Sum(Isnull(Z.monpag,0)) From TMP_PAGOS Z
Where Z.numdco=A.numero
and a.tipocomprobanteid=Z.tipdoc and z.serdco=a.serieid AND
Z.TIPMON=1 )

When 2 Then (Select Sum(Isnull(Z.monpad,0)) From TMP_PAGOS Z
Where Z.numdco=A.numero
and a.tipocomprobanteid=Z.tipdoc and z.serdco=a.serieid AND
Z.TIPMON=2 )
End),0)

From
Comprobante A

la verdad es que no le veo como optimizqarlo, asumo que el tiempo de
demora es por la cantidad de registros que hay, pero tampoco voy a tratar
de optimizar usando cursores.

a ver kien me da la mano







Respuesta Responder a este mensaje
#4 cali
18/10/2005 - 19:46 | Informe spam
sorry maxi pero como lo hago???? lo unico k conozco por plalmn de ejecucion
es cuando salen unos graficos de las lecturas de tablas y cosas asime
puedes dar alguna pista?


"Maxi" escribió en el mensaje
news:

pasame el plan de ejecucion de esta query


Salu2
Maxi [MVP SQL SERVER]


"cali" <nada> escribió en el mensaje
news:

la tabla de pagos tiene inidices en los 4 campos k tiene con fill factor
de 90%
y la de comprobante tiene campo identity


"Maxi" escribió en el mensaje
news:%

Fijate los indices


Salu2
Maxi [MVP SQL SERVER]


"cali" <nada> escribió en el mensaje
news:

me piden aka en el trabajo que optimice este proceso de update de 1
solo campo en mi tabla, el proceso dura casi 35 minutos, la tabla
comprobante tiene como 89000 filas y la tmp_pagos tiene como 90,000 es
donde se registran los comprobantes con sus respectivos pagos en una
determinada moneda, aki va el update

Update Comprobante
Set Montocancelado=Isnull((Case A.Monedaid
When 1 Then (Select Sum(Isnull(Z.monpag,0)) From TMP_PAGOS Z
Where Z.numdco=A.numero
and a.tipocomprobanteid=Z.tipdoc and z.serdco=a.serieid AND
Z.TIPMON=1 )

When 2 Then (Select Sum(Isnull(Z.monpad,0)) From TMP_PAGOS Z
Where Z.numdco=A.numero
and a.tipocomprobanteid=Z.tipdoc and z.serdco=a.serieid AND
Z.TIPMON=2 )
End),0)

From
Comprobante A

la verdad es que no le veo como optimizqarlo, asumo que el tiempo de
demora es por la cantidad de registros que hay, pero tampoco voy a
tratar de optimizar usando cursores.

a ver kien me da la mano

















Respuesta Responder a este mensaje
#5 Solomon
18/10/2005 - 22:43 | Informe spam
En el QA escribe el script y luego presional CTRL-L (o lo q es lo mismo,
escoge desde el menu la opcion Query y en este selecciona Display Estimated
Execution Plan).


"cali" <nada> wrote in message news:

sorry maxi pero como lo hago???? lo unico k conozco por plalmn de
ejecucion es cuando salen unos graficos de las lecturas de tablas y cosas
asime puedes dar alguna pista?


"Maxi" escribió en el mensaje
news:

pasame el plan de ejecucion de esta query


Salu2
Maxi [MVP SQL SERVER]
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida