| From: | Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar> |
|---|---|
| To: | pgsql-es-ayuda(at)postgresql(dot)org |
| Subject: | Mejorar update |
| Date: | 2009-05-25 13:49:13 |
| Message-ID: | 825870.66886.qm@web52107.mail.re2.yahoo.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-es-ayuda |
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/
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Mario Soto Cordones | 2009-05-25 13:53:29 | RE: Ayuda con funcion |
| Previous Message | Fernandos Siguenza | 2009-05-25 13:41:25 | Ayuda con funcion |