Srs
Estou com o seguinte problema , tenho a funcao abaixo que utilizo para
manipular os registros da tabela_1 e tabela_2 , sendo que a tabela_1 possui
aproximandamente 20 milhoes e a tabela 2 possui aproximadamente 10 milhoes
de registros.
Tentei descrever a funcao de uma maneira sucinta,porem o objetivo da mesma
sera manter dados historicos quando o registro da tabela_1 for diferente da
tabela_2, irei fazer isto com as outras interacoes na function.
Mas meu problema esta na performance da mesma, para fazer a leitura dos
registros, ela demora mto tempo.Gostaria de alguma dica para tentar resolver
este problema.
Desde ja grato pela atencao.
CREATE OR REPLACE FUNCTION teste_funcao (porcao integer)
RETURNS boolean AS
$BODY$
DECLARE
resultado boolean;
reg_proc record;
reg_rel record;
stringCnpjs text ='';
first boolean =true;
BEGIN
resultado := true;
--BEGIN
for reg_proc in
select
col_1 ,
col_2 ,
col_4 ,
col_5 ,
col_6,
col_7,
col_8,
col_9,
col_10,
col_11,
col_12,
col_13,
col_14,
col_15,
col_16,
col_17,
col_18,
col_19,
col_20,
col_21,
col_22,
col_23,
col_24
from tabela_1
where a.col_1=2 and col_2=0
limit porcao
loop
select
col_1,
col_2,
col_3,
col_4,
col_5,
col_6,
col_7,
col_8,
col_9,
col_10,
col_11,
col_12,
col_13,
col_14,
col_15,
col_16,
col_17,
col_18,
col_19
into reg_rel ---armazena no cursor implicito da tabela de
relacionamento
from tabela_2 rf
where rf.col1=reg_proc.col2;
If found then
begin
update tabela_2
set col_1=reg_proc.col_1,
col_2=reg_proc.col_2
where col1=reg_proc.col2;
end;
end loop;
return true;
--EXCEPTION
--when others then return false;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 10000;
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral