sql >> Base de Datos >  >> RDS >> Mysql

MySQL elimina rápidamente los duplicados de una gran base de datos

Creo que esto lo hará, usando una clave duplicada + ifnull():

create table tmp like yourtable;

alter table tmp add unique (text1, text2);

insert into tmp select * from yourtable 
    on duplicate key update text3=ifnull(text3, values(text3));

rename table yourtable to deleteme, tmp to yourtable;

drop table deleteme;

Debería ser mucho más rápido que cualquier cosa que requiera agrupar por o distinguir o una subconsulta, o incluso ordenar por. Esto ni siquiera requiere una ordenación de archivos, lo que eliminará el rendimiento en una tabla temporal grande. Seguirá siendo necesario realizar un análisis completo de la tabla original, pero no se puede evitar.