Em 29/11/07, Joao<[EMAIL PROTECTED]> escreveu: > > > Fábio so um errinho de portugues!! > "Vejamos uma forma de rezover problema de excluir muitos registros > utilizando o INSERT" > Oooooooooo leitor chato!!! > Abraços!!!
Got you! Eu já tinha corrigido antes de você postar.... Como escrevi isso de manhã antes de sair para o trabalho... dei uma revisada depois! Mas é sempre bom saber que tem gente dando uma ajuda para os artigos ficarem sem estes erros escabrosos. Obrigado pela força. []s > > ----- Original Message ----- > From: jota.comm > To: Comunidade PostgreSQL Brasileira > Sent: Thursday, November 29, 2007 8:54 AM > Subject: Re: [pgbr-geral] DELETE LENTO > > Olá, Fábio > > Acabei de ler o artigo, muito bom! > > Abraços > > > Em 29/11/07, Fabio Telles <[EMAIL PROTECTED] > escreveu: > > Hum... me empolguei um pouco e resolvi escrever sobre o assunto no meu > > blog. É claro que se trata de um caso particular de DELETE, mas fica a > > dica: > > > > > http://www.midstorm.org/~telles/2007/11/29/nao-use-delete-use-insert/ > > > > []s > > > > Em 29/11/07, Fabio Telles<[EMAIL PROTECTED]> escreveu: > > > Em 28/11/07, Brasil Software< > [EMAIL PROTECTED]> escreveu: > > > > Pessoal ! > > > > Estou com um grande problema, migrei minha base do firebird para > > > > postgresql e quando estou deletando um registro o tempo > > > > chega a ser vergonhoso em relação ao firebird. > > > > > > > > Alguem pode me ajudar. > > > > minha base tem: > > > > 293 tabelas > > > > algumas com 2 milhões de registros. > > > > > > > > > > Se você tem que deletar muitos registros a melhor coisa a fazer para > > > acelerar a operação é utilizar um TRUNCATE. Se você vai excluir poucos > > > registros, um índice para pesquisar o campo de seleção da cláusula > > > WHERE deve resolver. > > > > > > Ao excluir muitos registros, o DELETE é proibitivo. Você tem três > > > alternativas interessantes: > > > > > > 1) Executar o TRUNCATE e pronto. Isso funciona somente se você quer > > > excluir TODOS registros da tabela. Nem sempre é o caso! > > > > > > 2) Particionar a tabela e depois dar um TRUNCATE apenas na partição > > > que lhe interessa. Esta é com certeza uma excelente opção para bases > > > grandes onde você consegue prever uma exclusão de rotina em um grupo > > > previsível de dados, como "os registros do último trimestre". > > > Particionar tabelas grandes tem uma série de outros benefícios > > > colaterais que melhoram substancialmente o desempenho e diminuem o > > > gasto com os discos. > > > > > > 3) Se você não consegue prever o ponto de corte para excluir seus > > > dados, impedindo-o de particionar sua tabela de forma adequada, há um > > > último recurso que é utilizar o INSERT no lugar do DELETE: > > > - Mova os dados que NÃO serão excluÍdos para outra tabela auxiliar com > > > um CREATE TABLE AS SELECT (...) WHERE (...) > > > - Dê um TRUNCATE na tabela original. > > > - Carrege os dados na tabela original com um INSERT (...) SELECT (...) > > > - Dê um DROP TABLE na tabela auxiliar. > > > > > > Uma variação ainda mais rápida, mas mais delicada é você fazer a > > > tabela auxiliar se transformar em tabela original. Com isto, após > > > criar a tabela auxiliar, você precisa excluir a tabela original e > > > renomear a tabela auxiliar. O problema é que você terá depois que > > > recriar todos os CONSTRAINTS na mão. Em uma rotina bem planejada a > > > variante é mais rápida ainda. > > > > > > > > > Em ambientes realmente grandes eu vejo as pessoas aplicarem uma > > > combinação das técnicas 2 e 3. Quando se tem um volume que passa da > > > casa dos 500GB o particionamento é obrigatório. Quando o número de > > > linhas a excluir é grande, o DELETE nunca é eficiente, não apenas no > > > PostgreSQL, mas no Oracle e DB2 também... > > > > > > Espero ter ajudado. > > > > > > []s > > > Fábio Telles > > > -- > > > blog: http://www.midstorm.org/~telles/ > > > e-mail / jabber: [EMAIL PROTECTED] > > > > > > > > > -- > > blog: http://www.midstorm.org/~telles/ > > e-mail / jabber: [EMAIL PROTECTED] > > _______________________________________________ > > pgbr-geral mailing list > > pgbr-geral@listas.postgresql.org.br > > > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > > > > > ________________________________ > > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > 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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral