Re: Update muy largo

From: Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Update muy largo
Date: 2009-01-23 13:36:16
Message-ID: 861978.16057.qm@web52103.mail.re2.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

----- Mensaje original ----
> De: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
> Para: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
> Enviado: viernes 23 de enero de 2009, 9:57:44
> Asunto: Re: [pgsql-es-ayuda] Update muy largo
>
> El día 23 de enero de 2009 10:46, Jose Luis Balle
> 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 :
> >> 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
>
>
> --
> Emanuel Calvo Franco
> ArPUG / AOSUG Member
> Postgresql Support & Admin
> --
> TIP 4: No hagas 'kill -9' a postmaster

Complicadito el temaa..jee... no queria eso de eliminar update crear pero veo que sera lo mas practico.. pero ahora tengo un problemilla.. si corto el proceso con ctrl+C pierdo todo lo que hizo la funcion... habria una forma de hacerlo?

Yahoo! Cocina
Recetas prácticas y comida saludable
http://ar.mujer.yahoo.com/cocina/

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2009-01-23 13:54:58 Re: Implementacion de Cluster con Postgres
Previous Message Emanuel Calvo Franco 2009-01-23 12:57:44 Re: Update muy largo