O que usar para ganhar performance? Na comparação de dados?

Bom Dia,

Tenho 2 bancos de dados em maquinas diferentes e faço a atualização do banco A para o B.
então abro os dois bancos e faço os if da vida campo por campo…

Exemplo

If (tabelaa.campoA.equal(tabelaB.campoA)
If (tabelaa.campoB.equal(tabelaB.campoB)
If (tabelaa.campoC.equal(tabelaB.campoC)

Só que o banco está crescendo e está ficando lento essa comparação.

Como tirar essa gambiarra? E fazer do modo correto?
Lembrando que TEM QUE SER PELO JAVA. Não posso usar replicação do Postgres…

Abraços
Obrigado

Tem outro modo

Por que você compara campo a campo? Já tentou rodar um profiler para ver onde está o gargalo?

Se você está atualizando registros só precisa saber o ID, não?

for(/*registros de B*/){             
       A a = getA(b.id);
       if(a != null){
              /* update B com dados de A. Pode usar um BeanUtils da vida pra copiar os atributos, criar um Copy Constructor 
              ou usar outra estratégia pra não precisar copiar na mão */
       }
}

Seria bom também você explicar porque não pode fazer isso pelo banco, já que seria infinitamente mais rápido.

Coloca registros campos com a ultima data de modificicacao… assim inicialmente voce só precisa verificar esse campo… se as datas forem diferentes… vc compara o resto

Exatamente!

Eu faria um campo, tipo última atualização para cada dado… ae eu faria uma triagem prévia por data, e atualizaria somente o q estava desatualizado!

Verdade! Pq n pode ser pelo banco, já que este oferece a funcionalidade “quase de graça”?

Creio que seja mais rápido simplesmente atualizar todos os campos do que fazer verificação de datas e ifs da vida. Não vai ser um grande trabalho pro banco de dados atualizar 5 campos ao invés de 1, já que vai tudo no mesmo update e é pro mesmo registro.

Creio que seja mais rápido simplesmente atualizar todos os campos do que fazer verificação de datas e ifs da vida. Não vai ser um grande trabalho pro banco de dados atualizar 5 campos ao invés de 1, já que vai tudo no mesmo update e é pro mesmo registro.[/quote]

É… testa a data… se for diferente… update em tudo