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
