sql >> Databasteknik >  >> RDS >> Mysql

MySQL tar snabbt bort dubbletter från stor databas

Jag tror att detta kommer att göra det, med hjälp av en 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 vara mycket snabbare än allt som kräver grupp efter eller distinkt eller en underfråga, eller till och med ordning efter. Detta kräver inte ens en filsortering, vilket kommer att döda prestanda på ett stort temporärt bord. Kommer fortfarande att kräva en fullständig skanning över originaltabellen, men det går inte att undvika.



  1. Lista alla tabeller i postgresql informationsschema

  2. Varför använda INCLUDE-satsen när du skapar ett index?

  3. Postgres:hur rundar man en tidsstämpel uppåt eller nedåt till närmaste minut?

  4. Hur funktionen EXPORT_SET() fungerar i MySQL