Ir para conteúdo

POWERED BY:

Arquivado

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

Jonathan Badaró

performance do unique key

Recommended Posts

Olá a todos,

 

Tenho uma dúvida em questão de performance do banco de dados Mysql e do PHP. O me caso é o seguinte:

vou inserir um número grande de conteúdo em uma tabela, em torno de 500 inserções por vez, porém três campos juntos terão que ser únicos, não pode haver um conteúdo repetido na soma desses três campos.

 

Tendo esse problema, eu vejo três opções:

 

1 - A cada Insert, eu faço um select e verifico se aquele conteúdo existe na tabela, caso sim, eu não faço o Insert.

2 - Eu faço um Select da Tabela, faço a verificação (usando o PHP) de quais conteúdos podem ser inseridos.

3 - Defino as três colunas na tabela como UNIQUE KEY, e insiro todo o conteúdo, fazendo com que o banco de dados, se encarregue de fazer a verificação de quais conteúdos, podem ser inseridos.

 

Qual dessas três opções seria melhor em questão de performance ?

 

Valew pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faria a 3, questão pessoal pois prefiro estes controles no BD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Motta,

 

foi exatamente o que escolhi fazer, pelo fato de o código ficar mais limpo, pela performance do Banco que é maior que a do PHP, e por que as tarefas ficam melhor delegadas assim.

 

Porém, também me vem na cabeça o seguinte, imagina 500 requisições(INSERT's) a cada 30 segundos, e apenas 40 dessas requisições são realmente inseridas no banco, temos 460 requisições jogadas foras, e seria mais ou menos esse o caso de uso. A opção numero 2 iria fazer uma requisição para selecionar as tabelas no Banco, filtrava quais conteúdos poderiam ser inseridos e inseria os 40, totalizando 41 requisições no Banco.

 

A pergunta a ser feita é, essas 460 requisições no banco, são mais performáticas do que um algorítimo para filtrar o conteúdo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jonathan Badaró, não existe milagre, para não pernitir duplicados alguma leitura terá de ser feita, o unique faz uma leitura, a vantagem e que o unique cria um index (ao menos no Oracle é assim).

 

Eu iria no caminho da unique key e a aplicação trata a exceção do duplicates.

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.