Ir para conteúdo

Arquivado

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

Aprendiz/CE

Evitar duplicidade de registros (corretamente)

Recommended Posts

Prezados,

 

Qual seria a forma mais correta/usual para se evitar a duplicação de registros durante um processo de importação entre tabelas? Quero levar em conta também a questão de performance.

 

Eu sempre faço uma verificação com um "SELECT" antes do "INSERT". Caso o registro não exista na tabela de destino é que eu faço o "INSERT" do novo registro. Penso que esse método não seja muito legal quando tenho uma volume de registros muito grande, apesar deu nunca ter tido nenhum tipo de problema. Pergunta: Seria melhor utilizar um "INSERT CONDICIONAL", ou seja, utilizar um "WHERE NOT EXIST" e fazer a verificação no próprio momento da inserção?

 

Grato e aguardo qualquer comentário.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma chave primária ou única garante que não ocorram duplicidades mas dependendo do volume pode retardar um processo de importação.

 

Como seria esta "importação" ? uma vez só (migração) ?

Processo de dia a dia ?

 

Qual seria o volume ?.

 

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta, boa tarde.

 

Na realidade seriam varias tabelas, mas mencionei somente uma pra ser mais sucinto. Tomando uma como exemplo aplicaria o método para as outras.

 

A importação seria uma coleta de dados diária, podendo ocorrer uma unica vez ao dia como várias vezes também.

 

O volume pode variar muito entre as três tabelas envolvidas. Na tabela mais expressiva pode variar de 1 registro a mais ou menos 3000 registro para cada processo de importação.

 

Mais uma vez obrigado pela sua atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sendo diária eu usaria chave primárias e/ou únicas para impedir duplicidades.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sendo diária eu usaria chave primárias e/ou únicas para impedir duplicidades.

Entendo.

Mas quanto a questão de performance? E Outra coisa: Como ficaria a questão a nível de aplicação (client)? Ao tentar fazer uma inclusão o banco geraria exceção correto? Trata isso e informava ao aplicativo (client) ou deixaria transparente? Como deveria ficaria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A performance em geral é boa pois as constraints criam um índice, quanto à aplicação não sei detalhes pois não trabalho com mysql/php mas basicamente é a tratar o erro/exceção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A performance em geral é boa pois as constraints criam um índice, quanto à aplicação não sei detalhes pois não trabalho com mysql/php mas basicamente é a tratar o erro/exceção.

 

Entendido. Você já me ajudou muito com os seus comentários.

 

Forte abraço!

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.