有一个数据表,共三个字段:id,data,datetime。
其中 data 是不能重复的,但是由于粗心在最开始的时候忘记给data字段设置了unique约束。
在插入数据的过程中造成了大量重复。
目前:
数据总量(count(* ))是 50W,不重复数据量 (distinct(data) ) 35W。
现在的需求是把重复的数据删除掉且只保留其中一条。
使用如下语句进行去重(网络上找的):
delete from bj where data_info in
(select data_info from
( select data_info from bj group by data_info having count(data_info)>1) a)
and id not in
( select min(id) from
(select min(id) as id from bj group by data_info having count(data_info)>1 ) b)
先测试了总量为 1000 的数据,功能是 OK 的。
然后在单核 2G 的云主机上对 50W 总量的数据跑这个 sql,跑了超过 1 个小时还没有出结果。
求问有什么高效的方法可以替代这个方法呢?
在此感谢各位老哥。