----------------------------------------------------------------------------------------------------------------------------- --> Mensagem enviada com assunto Digest pgbr-geral, volume 52, assunto 36
Em 11 de abril de 2013 11:46, Douglas Fabiano Specht < [email protected]> escreveu: > > Marcone, > para um update setando tudo como zero, criando o campo como defalut agiliza bastante, mas o problema é quando eu tenho que recalcular um campo da tabela toda ja nao daria, exemplo: > > update tabela set campo3=campo1-campo3 where campo4=4 > > alguem teria outra sugestão? > > Douglas Specht ----------------------------------------------------------------------------------------------------------------------------- Douglas... favor não enviar mensagens em resposta a Disgests e manter a discussão na mesma thread. Isso bagunça o histórico da lista e muitos dos amigos (meu caso) não lêem Disgests. Por coincidência percebi que eu havia respondido uma pergunta sua e resolvi dar uma olhada. Não entendi bem seu caso então... Quando trabalhamos com bases de dados maiores tem casos em que o para executar determinada mudança de estrutura vai ter um custo (processamento, tempo, etc). A minha dica foi baseada em um post meio antigo (se não me engano do Fabio Telles) que falava sobre "não fazer delete, fazer insert" ou coisa parecida, porém o google não facilitou minha vida para eu te encaminhar esse link. Esse post fala que no caso de excluir muitos registros seria mais eficiente inserir os que não seriam deletados em uma "nova tabela". Aí eu usei essa dica em algumas situações em meus ambiente e consegui bons resultado, adaptando também para casos de inclusão de coluna que foi o que eu tentei te indicar em linhas gerais. Essa dica você pode adaptar para campo calculados sem problemas, mas eu acho que se você tem um campo calculado com base em campos na mesma linha da tabela, não vejo motivo para você ter esse cálculo (a menus que o cálculo em si seja muito, muito, muito complexo - acho que isso pode gerar outra thread) Em fim... vou tentar de dar um exemplo: ----------------------------------- -- tabela original create table rotiginal( id integer primary key, dado varchar); -- novo campo seria assim create table tmp_original as table original; -- Veja a sintaxy correta alter table tmp_original add column campo_concat varchar; insert into tmp_original select id, dado, dado || ' - ' || id::varchar from original; drop table original; alter table tmp_original rename to original; -- Restaurar todas as constraints e índices ----------------------------------- Nesse caso você também terá de verificar se esse processo será mais rápido ou não. Como falei no outro e-mail... você tem que validar esse procedimento, se você não tiver segurança disso vai no add column e update mesmo. Espero ter ajudado. -- Marcone Peres - DBA http://www.linkedin.com/in/marconeperes http://oraculogeo.blogspot.com.br/ @marconeperes (61) 8146-0028
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
