Oracle海量數據(1000w+)重復數據刪除方法


方法1:delete from xxx(表名) where rowid not in( select max/min(rowid) from xxx(表名) group by xxx(需要去重的列名,可以跟逗號實現多個列名去重))。

此方法采用直接刪除的方法。但是效率比較低,數據量小的話可以使用。對於超過100w的數據推薦用方法2.

方法2:create table xxx(自定義表名) as select *(如果只需要部分列就直接把需要的列寫出來) from xxx(表名)where rowid in (select max/min(rowid) from xxx(表名) group by xxx(需要去重的列名,可以跟逗號實現多個列名去重)) 

此方法采用將非重復數據導出至中間表的方法。可將原表drop,中間表重命名。也可以將中間表數據再導回至原表(暫未實踐)。此方法效率較方法1效率有極大的提高。推薦用此方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM