Neste tutorial, aprenderemos como remover linhas duplicadas em um banco de dados MySQL para reduzir o tamanho do banco de dados e ajudar a aumentar o desempenho do servidor.
Antes de continuarmos, estamos assumindo:
OBSERVAÇÃO: Se você precisar de um banco de dados de amostra para experimentar os conceitos fornecidos neste guia, considere o banco de dados Sakila ou faça o download de uma cópia do banco de dados usado neste guia.
Os recursos são fornecidos abaixo:
Uso básico
Antes de começarmos, criaremos intencionalmente uma tabela contendo valores duplicados para fins de teste. As consultas SQL para executar esta ação estão abaixo:
Usar mundo;Sinta -se à vontade para modificar a consulta acima para atender às suas necessidades. Você também deve garantir que você tenha o banco de dados (mundo) criado para evitar erros.
Agora, se obtivermos todos os dados dentro da tabela e, em ordem, pelo nome de usuário, veremos as duplicatas que temos como mostrado:
MySQL> Use World;Como você pode ver na tabela acima, temos dois valores duplicados que aumentam o banco de dados sem motivo e causam velocidades lentas.
Vamos agora aprender como podemos remover esses valores.
#1 - Excluir junte
Uma maneira de remover linhas duplicadas em um banco de dados é usar a instrução MYSQL DELET. A consulta, no entanto, usa IDs para remover valores duplicados.
Por exemplo, para remover os valores duplicados na tabela de usuários acima, podemos inserir:
Exclua a tabela 1 dos usuários Tabela 1 INNER JUNIO.eu ia < table2.id AND table1.email = table2.email;Depois de executar a consulta acima, você removerá os valores duplicados, como mostrado na saída abaixo:
mysql> Excluir tabela 1 dos usuários Tabela 1 ingressos internos Tabela de usuários onde Tabela1.eu ia < table2.id AND table1.email = table2.email;#2 - função row_number ()
O segundo método que podemos implementar é usar a função mysql row_number (). Esta função é suportada no MySQL versão 8 e superior.
Funciona atribuindo um valor int seqüencial a cada linha, com linhas contendo valores duplicados obtendo um valor maior que 1.
Para saber mais sobre essa função, use o recurso fornecido abaixo:
https: // dev.mysql.com/doc/refman/8.0/EN/Window-Function-Driptions.html#function_row-number
Considere a consulta abaixo que retorna o ID das linhas com valores duplicados:
Selecione ID em (selecione ID, row_number () sobre (Partição por nome de usuário Ordem por nome de usuário) como row_var dos usuários) T1 onde row_var> 1;Depois de executar a consulta acima, você deve obter a lista de IDs, como mostrado na saída abaixo:
+----+Se você deseja remover os valores, basta substituir a instrução Selecionar pela instrução Excluir, como mostrado abaixo:
Exclua dos usuários onde o ID entra (selecione ID (selecione ID, Row_Number () Over (Partição por Nome de usuário Ordem pelo nome de usuário) como row_var dos usuários) t1 onde row_var> 1);Finalmente, você pode verificar se os valores duplicados são removidos usando a instrução SELECT.
mysql> selecione * do pedido de usuários por nome de usuário;Conclusão
Neste tutorial, discutimos os dois métodos de remoção de valores duplicados de um banco de dados. Grandes bancos de dados, especialmente aqueles em uso comum, podem conter muitos valores duplicados de importações externas e outros erros. Portanto, é necessário continuar purgando valores duplicados para garantir que os aplicativos tenham desempenho ideal.