"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Um índice exclusivo pode remover duplicatas em uma tabela com duplicatas existentes e como?

Um índice exclusivo pode remover duplicatas em uma tabela com duplicatas existentes e como?

Publicado em 2024-11-08
Navegar:526

Can a Unique Index Remove Duplicates in a Table with Existing Duplicates, and How?

Removendo duplicatas com índice exclusivo

Em um esforço para evitar a inserção de dados duplicados, um índice normal foi criado erroneamente para os campos A, B, C e D, resultando na presença de registros duplicados em uma tabela de 20 milhões de registros. Surge a pergunta: adicionar um índice exclusivo para esses campos removerá as duplicatas sem comprometer as existentes?

Corrigindo o índice e tratando duplicatas

Adicionar um índice exclusivo com o A instrução ALTER TABLE sem o modificador IGNORE falhará, pois já existem registros exclusivos. No entanto, usar o modificador IGNORE removerá as duplicatas.

Abordagem alternativa para versões 5.7.4 e superiores do MySQL

Para versões 5.7.4 e superiores do MySQL, onde o O modificador IGNORE não é suportado, uma abordagem diferente é recomendada:

  1. Copiar os dados para uma tabela temporária.
  2. Truncar a tabela original.
  3. Crie o índice exclusivo .
  4. Copie os dados de volta para a tabela original usando INSERT IGNORE, descartando quaisquer linhas duplicadas.

Sintaxe para remover duplicatas com INSERT IGNORE

CREATE TABLE tmp_data SELECT * FROM mytable;
TRUNCATE TABLE mytable;
ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);
INSERT IGNORE INTO mytable SELECT * FROM tmp_data;
DROP TABLE tmp_data;

Considerações adicionais

A documentação não especifica qual linha duplicada será mantida após usar o modificador IGNORE. É aconselhável testar isso em um conjunto de dados menor antes de aplicar a solução a uma tabela grande.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3