刪除重複資料的一種高效的方法
表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);
耗時:幾個小時以上
[@more@]
方法一: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秒,適合大資料量的情況,產生更少回滾量;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750220/viewspace-888325/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 刪除重複資料的幾種方法Oracle
- Mongodb 刪除重複資料的幾個方法MongoDB
- 刪除重複資料的幾個方法(轉)
- 刪除重複資料的三種sql寫法SQL
- mysql查詢表裡的重複資料方法和刪除重複資料MySql
- 重複資料刪除和SSD的互補方法
- 刪除重複資料
- Java刪除ArrayList中的重複元素的2種方法Java
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- SQL Server中刪除重複資料的幾個方法SQLServer
- mongodb刪除重複資料MongoDB
- MySQL刪除重複資料MySql
- Oracle查詢重複資料與刪除重複記錄方法Oracle
- excel刪除重複資料保留一條 如何刪掉重複資料只留一條Excel
- Oracle中刪除重複資料的SqlOracleSQL
- mysql 刪除表中重複的資料MySql
- 經典SQL面試題4:高效的刪除重複記錄方法SQL面試題
- 刪除表裡重複資料
- sqlserver中刪除重複資料SQLServer
- MySQL刪除表重複記錄的三種方法舉例MySql
- 三種方法刪除列表中重複的元素及效率分析!
- 用SQL語句刪除重複記錄的四種方法SQL
- Oracle 刪除重複資料只留一條Oracle
- oracle重複資料的查詢及刪除Oracle
- oracle刪除重資料方法Oracle
- PostgreSQL刪除表中重複資料SQL
- 解析postgresql 刪除重複資料案例SQL
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- SQL刪除重複資料,只保留一行SQL
- NetApp FAS Filer的重複資料刪除APP
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄) 轉Oracle
- 【轉】oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- Oracle查詢重複資料與刪除重複記錄Oracle
- 重複資料刪除:備份中的“消重加速器”
- MYSQL中刪除重複記錄的方法薦MySql
- MySQL資料庫中刪除重複記錄的方法總結[推薦]MySql資料庫
- MS SQL Server 刪除重複行資料SQLServer
- T-SQL 刪除重複資料SQLSQL