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:
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.
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