向大师致敬,向大师学习!!!

删除重复记录

上一篇 / 下一篇  2008-06-24 14:40:05 / 个人分类:数据库(oracle)

删除重复记录,很早就干这个事了,今天再次做了一次,只是这次的重复记录较多,需要考虑不同方法的实现效率,记录一下:

一:采用临时表 暂存原有table的记录,truncate 原有表,然后把distinct的记录insert回去,不太适合very large table。

二:采用max,min,结合rowid方式删除,适合大表中得少量重复记录
Delete Prov_Income_Drp a
Where Rowid < (Select Max(Rowid)
        From Prov_Income_Drp b
        Where a.Yyyymm = b.Yyyymm And a.Main_Code = b.Main_Code And a.Item = b.Item And
           a.Province_Comp_No = b.Province_Comp_No And a.Type = b.Type)

 

三:适合每个记录只有一条重复得情况,本例中就是这种情况,使用第二中语句很长时间执行也没有执行完,换用此中方法,很快结束,下面二个sql得执行计划

Delete Prov_Income_Drp
Where Rowid In (Select b.Rowid
        From Prov_Income_Drp a,Prov_Income_Drp b
        Where a.Rowid > b.Rowid  And a.Yyyymm = b.Yyyymm And a.Main_Code = b.Main_Code And a.Item = b.Item And
           a.Province_Comp_No = b.Province_Comp_No And a.Type = b.Type)

 


TAG: 删除重复记录

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar