Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Flávio Douglas Nunes

[Resolvido] Como Melhorar a performace de um UPDATE

Recommended Posts

Tenho um formulário com muitos campos, e quando preciso atualizar por exemplos apenas um campo, e feito um update em todos os campos da tabela substituindo todos os valores.

 

Gostaria de saber como fazer para fazer o UPDATE e atualizar somente os campos que foram modificados.

 

O banco de dados utlizado é PostgreSQL.

 

Desde já agradeço a atenção !

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara.. eu acho isso desnecessário..

 

UPDATE, INSERT, DELETE são sempre rápidos.. oque você precisa se preocupar são os SELECTs.

 

Veja, não me ocorreu nada 'prático', e nem conheço outra forma de fazer oque você perguntou.

 

A única coisa que me veio a cabeça, seria formar o UPDATE em tempo de execução.

Ai você teria que:

-> fazer um SELECT na tabela

-> comparar os dados do retorno deste SELECT, com os enviados

-> so adicionar no UPDATE oque fosse diferente.

 

Esse processo, certamente seria mais lento do que apenas fazer UPDATE em todas as colunas.

 

Assim, não sei se existe outra forma, esta foi a única que me ocorreu agora.

Vejamos se mais alguém tem alguma idéia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o numero de campos da tabela e bem elevado.

aparentemente, então o teu problema é que a modelagem sql parece estar incorreta.

Conhece as Formas Normais ?

 

Pelo menos está parecendo que você está procurando um paliativo, para um outro problema que surgiu de um mal planejamento.

 

leia:

use o Responder Azul respondery.png

ou a 'Resposta Rápida'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho quase certeza de que o custo de performance a nível de banco é exatamente o mesmo para alterar uma coluna de uma linha ou todas as colunas dessa mesma linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Flávio, dependendo da versao do MySQL nao precisa se preocupar.

O MySQL identifica os dados antes de fazer update e altera apenas os que estiverem diferentes

 

 

por exemplo, você tem um formulário assim

aa [ 50 ]
bb [ 51 ]
cc [ 52 ]

 

o usario modifica e envia

 

aa [ 10 ]
bb [ 51 ]
cc [ 52 ]

 

o usuario modificou apenas "aa"

 

no server side, o mysql vai verificar cada um e alterar apenas o que estiver diferente do valor já existente no banco

 

 

nesse caso vai alterar apenas "aa"..

 

para comprovar isso, logo após o update, verifique usando mysql_affected_rows();

 

claro que isso custa processos de qualquer forma, mas não é tão relevante..

 

Outra técnica que você pode utilizar são recursos client-side ( javascript ) que identifique e envie somente dados que foram alterados.

É mais trabalhoso de implemntar e manter, mas se questão de perfomance for tão importante assim, "go-ahead"

 

Confome comentaram acima, verifique a estrutura da tabela.

Remova índices e chaves desnecessárias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.