ITPub博客

首页 > 数据库 > 数据库开发技术 > 删除重复数据的一种高效的方法

删除重复数据的一种高效的方法

原创 数据库开发技术 作者:yaanzy 时间:2005-02-18 13:57:42 0 删除 编辑
表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 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博客 ” ,链接:https://blog.itpub.net/3898/viewspace-790239/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: linux下的automounter
请登录后发表评论 登录
全部评论
  • 博文量
    108
  • 访问量
    790608