Re: Update muy largo

From: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Update muy largo
Date: 2009-01-23 12:57:44
Message-ID: f205bb120901230457y2f81be15l7f6e664da820b13b@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El día 23 de enero de 2009 10:46, Jose Luis Balle
<joseluisballe(at)gmail(dot)com> escribió:
> La verdad que no se si se puede hacer lo que decis... y si se pudiera
> no se si sería recomendable, teniendo en cuenta que un update necesita
> actualizar todos los indices necesarios para mantener la coherencia de
> la data.
> Entonces:
> ¿no te conviene ponerle un trigger a la tabla para que los ceros se
> agreguen en el momento de la insersion?
> ¿probaste borrar el indice, hacer el update y crear nuevamente el indice?
> Si el numdoc es numerico, ¿porque lo forzas a varchar?
>
> 2009/1/23 Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>:
>> Siguiendo un poco con el hilo de mi post anterior, para recordarles tengo una funcion que recorre una tabla de personas y le agrega ceros a la izquierda a todos los numdoc.
>> Creo que la gran demora de esto (lleva casi 72Hs) es porque tengo un indice sobre el campo (numdoc) que estoy actualizando y como los los registros se insertaron secuencialmente desde archivos planos ordenados por nombres (y sin haber existido en ese momento el indice de numdoc)...por ende el UPDATE me hace registro por registro pero ordenados por numdoc y ahi es que demora tanto....
>> no se si mi cabeza anda mal ya que tengo 38 pirulitos pero creo recordar que (en cobol me parece) cuando se hacia una operacion SQL se podia indicar que indice usar, se puede hacer en postgres esto? en este caso especial indicarle a posgres que no use indices sino que realice un barrido secuencial, sin tener que borrar y luego recrear los indices?
>>

Una rule sería más rápida creo.
Lo que podrías hacer es realizar explains modificando la consula hasta
que encuentres la forma de que lo haga secuencial por nombre o sin ordenamiento.
Luego de terminado el proceso reindexar la tabla.

#enable_bitmapscan = on
#enable_hashagg = on
#enable_hashjoin = on
#enable_indexscan = on
#enable_mergejoin = on
#enable_nestloop = on
#enable_seqscan = on
#enable_sort = on
#enable_tidscan = on

podes poner en set enable_indexscan = off...
desde psql

>>
>> Yahoo! Cocina
>> Recetas prácticas y comida saludable
>> http://ar.mujer.yahoo.com/cocina/
>> --
>> TIP 8: explain analyze es tu amigo
>>
> --
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
> (envía "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)
>

--
Emanuel Calvo Franco
ArPUG / AOSUG Member
Postgresql Support & Admin

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Ferro 2009-01-23 13:36:16 Re: Update muy largo
Previous Message Jose Luis Balle 2009-01-23 12:46:12 Re: Update muy largo