Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL entfernt schnell Duplikate aus großen Datenbanken

Ich glaube, das wird es tun, indem man einen doppelten Schlüssel + ifnull () verwendet:

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;

Sollte viel schneller sein als alles, was eine Gruppierung nach oder eine Unterabfrage oder sogar eine Bestellung nach erfordert. Dazu ist nicht einmal eine Dateisortierung erforderlich, die die Leistung einer großen temporären Tabelle beeinträchtigen würde. Es ist immer noch ein vollständiger Scan der ursprünglichen Tabelle erforderlich, aber das lässt sich nicht vermeiden.