sql >> Database teknologi >  >> RDS >> Mysql

MySQL fjerner hurtigt dubletter fra stor database

Jeg tror, ​​dette vil gøre det, ved at bruge på duplicate key + 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;

Bør være meget hurtigere end noget, der kræver gruppe efter eller særskilt eller en underforespørgsel, eller endda rækkefølge efter. Dette kræver ikke engang en filsortering, som vil dræbe ydeevnen på et stort midlertidigt bord. Vil stadig kræve en fuld scanning over den originale tabel, men det er ikke til at undgå.



  1. Dræb en postgresql-session/forbindelse

  2. 10 bedste startups i cloud – 2018

  3. Hvordan kan jeg ændre MariaDB til MySQL i XAMPP?

  4. Sådan INSERT Hvis række ikke eksisterer (UPSERT) i MySQL