oracle 刪除表中重覆記錄

2021-09-01 06:53:07 字數 703 閱讀 1895

表demo是重複拷貝自dba_objects,有88萬左右,不重複的是27323,沒有索引

方法一:delete from demo a where a.rowid <> (select max(rowid) from demo b where

b.object_id=a.object_id);

耗時:幾個小時以上

方法二: delete from demo where rowid in

(select rid from

(select rowid rid,row_number() over(partition by object_id order by rowid) rn

from demo)

where rn <> 1 );

耗時:30秒

方法三: create table demo2 as

select object_id,owner... from

(select demo.*,row_number() over(partition by object_id order by rowid) rn from demo)

where rn = 1;

truncate table demo; insert into demo select * from demo2; drop table demo2;

共耗時: 10秒,適合大資料量的情況,產生更少回滾量;

Oracle刪除重覆記錄

oracle刪除重覆記錄的最好的方法 delete from emp e where e.rowid select min y.rowid from emp y where y.empno e.empno 1 子查詢找出某員工最低的rowid 肯定只有乙個 其它大於這條記錄rowid的,全部刪除。2...

如何刪除表中重覆記錄?

最近專案中遇到了乙個需求,即 如何刪除表中重覆記錄,使得所有重複的記錄都只保留一行?在google了半個小時之後,發現居然沒有乙個是正常可用的,於是乎只好自己動手寫了乙個。因為即便是grails提供了很好的gorm,但是使用sql仍然不可能完全避免,因此把它共享出來,也符合咱們 的 共享開發經驗 的...

快速刪除ORACLE重覆記錄

在oracle中,可以通過唯一rowid實現刪除重覆記錄 還可以建臨時表來實現.這個只提到其中的幾種簡單實用的方法,希望可以和大家分享 以表employee為例 sql desc employee name null?type emp id number 10 emp name varchar2 2...