Eliminar duplicados con índice único
En un esfuerzo por evitar la inserción de datos duplicados, se creó por error un índice normal para los campos A, B, C y D, lo que da como resultado la presencia de registros duplicados en una tabla de 20 millones de registros. Surge la pregunta: ¿agregar un índice único para estos campos eliminará los duplicados sin comprometer los existentes?
Corrección del índice y manejo de duplicados
Agregar un índice único con el La instrucción ALTER TABLE sin el modificador IGNORE fallará porque ya existen registros únicos. Sin embargo, usar el modificador IGNORE eliminará los duplicados.
Enfoque alternativo para las versiones de MySQL 5.7.4 y superiores
Para las versiones de MySQL 5.7.4 y superiores, donde el El modificador IGNORE no es compatible; se recomienda un enfoque diferente:
Sintaxis para eliminar duplicados con INSERT IGNORAR
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;
Consideraciones adicionales
La documentación no especifica qué fila duplicada se conservará después de usar el modificador IGNORE. Es recomendable probar esto en un conjunto de datos más pequeño antes de aplicar la solución a una tabla grande.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3