可以分段处理。一次处理个 1000w条数据,去重,然后插入到一个新的表中,也就是需要60个表,然后一步一步去重合并,操作上有点麻烦,防止把你的电脑 弄歇菜了

解决方案 »

  1.   

    数据量较大,直接整表处理对数据库日志冲击太大不合适,建议分批处理(如每次处理5000行),
    如下例子供参考.declare @minid int,@maxid intselect @minid=min(id),
           @maxid=max(id)
     from odrewhile(@minid<=@maxid)
    begin
     -- 删除重复的记录,只保留id最小的那条记录.
     delete a
      from odre a
      inner join
      (select [重复值的字段列表],min(id) 'id'
       from odre 
       where id between @minid and @minid+5000
       group by [重复值的字段列表]
       having count(1)>1) b on a.[重复值的字段列表]=b.[重复值的字段列表] and a.id<>b.id
      where a.id between @minid and @minid+5000 select @minid=@minid+5001
    end