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
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 |