RE: Mejorar update

From: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
To: <gabrielrferro(at)yahoo(dot)com(dot)ar>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Mejorar update
Date: 2009-05-25 16:43:29
Message-ID: BLU137-W30677AAF0C361D043198A8E3550@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


No se que tan lenta sea la funcion pero me supongo que debe de ser de muerte ....
Lo primero:

1- Elimina ese for y haz un simple update, ese for es de muerte ahi.
2- Envia el explain solo con el update

*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas
*-809-849-8087

* " Si deseas lograr cosas excepcionales debes de hacer cosas fuera de lo comun"
*-------------------------------------------------------*

----------------------------------------
> Date: Mon, 25 May 2009 06:49:13 -0700
> From: gabrielrferro(at)yahoo(dot)com(dot)ar
> Subject: [pgsql-es-ayuda] Mejorar update
> To: pgsql-es-ayuda(at)postgresql(dot)org
>
>
> Tengo la siguiente funcion de actualizacion sobre una tabla muuuuuyyyy grande
>
> CREATE OR REPLACE FUNCTION padrones.cargavectp()
> RETURNS void AS
> $BODY$
> declare
> registro RECORD;
> cuenta bigint;
> terminar boolean;
> begin
> cuenta=0;
> FOR registro IN SELECT * from padrones.personas where ((vectordatos is null) or (vectornombre is null)) LOOP
> update padrones.personas set vectornombre=to_tsvector('spanish',coalesce(nombre,'')), vectordatos=to_tsvector('spanish',coalesce(datos,''))
> where clave=registro.clave;
> if registro.otrosnombres is not null then
> update padrones.personas set vectorotrosnombres=to_tsvector('spanish',coalesce(otrosnombres,'')) where clave=registro.clave;
> end if;
> cuenta=cuenta+1;
> select public.basura.bandera into terminar from public.basura limit 1;
> if terminar=true then
> raise notice 'ACTUALIZO %',cuenta;
> exit;
> end if;
> END LOOP;
> end;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE
> COST 100;
> ALTER FUNCTION padrones.cargavectp() OWNER TO gferro;
>
> Coo tarda muchisiimo, lo hice asi para poder pararla y luego reanuardarla, por eso no uso un simple update.
> Existe alguna forma de acelerarla sin tener que perder la posibilidad de poder pararl/proseguir?
>
>
> Yahoo! Cocina
> Recetas prácticas y comida saludable
> http://ar.mujer.yahoo.com/cocina/
> --
> TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
_________________________________________________________________
Windows Live Hotmail now works up to 70% faster.
http://windowslive.com/Explore/Hotmail?ocid=TXT_TAGLM_WL_hotmail_acq_faster_112008

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Javier Chávez B. 2009-05-25 16:53:39 Re: OT: Clave natural o clave artificial
Previous Message Edwin Quijada 2009-05-25 16:41:30 SQL en function en C