Grato pela ajuda, estou mudando as consultas conforme sua sugestao para iniciar os testes novamente.
Valeu!!!! Em 12 de fevereiro de 2010 11:04, Fábio Telles Rodriguez < [email protected]> escreveu: > Dê uma olhada nisso, deve lhe ajudar: > > http://www.postgresql.org/docs/8.4/static/queries-union.html > > Dica, resolva o problema somente com SQL primeiro, gerando EXPLAIN > para as suas consultas e só depois que estiver satisfeito, passe para > o PL. > > Espero ter ajudado. > > []s > Fábio Telles > > Em 12 de fevereiro de 2010 11:27, Tiago Valério > <[email protected]> escreveu: > > 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 > > > > > > > > -- > blog: http://www.midstorm.org/~telles/ > e-mail / jabber: [email protected] > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
