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: [email protected]
> Subject: [pgsql-es-ayuda] Mejorar update
> To: [email protected]
>
>
> 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--
TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net

Responder a