刪除重複資料的一種高效的方法
表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中,有個隱藏了自動rowid,裡面給每條記錄乙個唯一的rowid,我們如果想保留最新的一條記錄,我們就可以利用這個字段,保留重複資料中rowid最大的一條記錄就可以了。下面是查詢重複資料的乙個例子 select a.rowid,a.from 表名 a where a.rowid sel...
ORACLE刪除重複資料
我們可能會出現這種情況,某個表原來設計不周全,導致表裡面的資料資料重複,那麼,如何對重複的資料進行刪除呢?重複的資料可能有這樣兩種情況,第一種時表中只有某些字段一樣,第二種是兩行記錄完全一樣。一 對於部分字段重複資料的刪除 先來談談如何查詢重複的資料吧。下面語句可以查詢出那些資料是重複的 selec...
oracle 複製資料 刪除重複資料
最簡單的複製 insert into a kcdm,zklb,kksj i select kcdm,zklb,kksj i from b 產生疑惑的地方 如果a有乙個自增的id,語句該怎麼寫?開始想法 insert into a id,kcdm,zklb,kksj i select seq a id...