sql >> Database >  >> RDS >> Mysql

MySQL verwijdert duplicaten snel uit grote database

Ik geloof dat dit het zal doen, met behulp van op dubbele sleutel + 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;

Zou veel sneller moeten zijn dan alles waarvoor groeperen op of onderscheiden of een subquery, of zelfs bestellen op, vereist is. Dit vereist niet eens een filesort, wat de prestaties op een grote tijdelijke tabel zal doden. Vereist nog steeds een volledige scan over de originele tabel, maar daar is geen ontkomen aan.



  1. Kan ik verbinding maken met SQL Server met Windows-verificatie vanuit de Java EE-webapp?

  2. Verschil tussen NullIf() en IfNull() in SQLite

  3. Hoe ruby-oci8 installeren?

  4. De nieuwe hittegolf van MySQL begrijpen