当前位置:  数据库>oracle

Oracle比较快的删除重复数据的方式

    来源: 互联网  发布时间:2017-05-20

    本文导语: 网上五花八门,Oracle删除重复数据的方法就是没见过这种:  DELETE FROM prod_grid_inc WHERE  ROWID IN (SELECT b.row_id2                  FROM  (SELECT ROWID row_id2,                                a.*,                                ...

网上五花八门,Oracle删除重复数据的方法就是没见过这种:
 

DELETE FROM prod_grid_inc
 WHERE  ROWID IN (SELECT b.row_id2
                  FROM  (SELECT ROWID row_id2,
                                a.*,
                                row_number() over(PARTITION BY a.prod_id ORDER BY a.insert_date DESC) row_num
                          FROM  prod_grid_inc a) b
                  WHERE  b.row_num >= 2);
 大家不妨试试,经过试验,的确快了不少。

如果是几G的大表(这种时候一般是分区表),这种情况最好是append+nologging方式,将唯一记录insert到临时表中,然后通过交换分区的方式交换过去,前后只需要几分钟,其中临时表的表空间和索引表空间要符合正式表的要求:

eg: 

INSERT /*+append*/ INTO ACCT_ITEM_MID
 SELECT *
  FROM ACCT_ITEM SUBPARTITION(P_201109_SUB_P_XX) a
  WHERE ROWID = (SELECT MAX(ROWID)
                  FROM ACCT_ITEM SUBPARTITION(P_201109_SUB_P_XX) a1
                  WHERE a.cust_id = a1.cust_id);
 COMMIT;
               
 ALTER TABLE ACCT_ITEM EXCHANGE SUBPARTITION P_201109_SUB_P_XX WITH TABLE ACCT_ITEM_MID;
 当然exchange的方式虽然快,但是这种情况会导致索引失效,需要重建索引:
 

alter index ind_name rebuild subpartition subpartition_name;
 如此即可。


    
 
 

您可能感兴趣的文章:

  • 请教:为什么删除不掉?我用超级用户删除某一文件夹rm -R oracle失败。
  • 在linux 中如何删除oracle db 与卸载oracle.
  • Oracle删除表前判断表名是否存在若存在则删除
  • oracle创建删除用户示例分享(oracle删除用户命令及授权)
  • oracle 彻底删除方法
  • Oracle删除后不能重新安装的解决方法
  • ubuntu如何彻底删除oracle
  • 彻底删除Oracle数据库的方法
  • Oracle删除当前用户下所有表的方法适用于有或没有删除权限
  • shell脚本操作oracle删除表空间、创建表空间、删除用户
  • 技巧分享 删除Oracle10G中的垃圾表
  • Oracle删除带有空格的表
  • 请问怎么用jsp语句删除oracle中的一条记录?
  • Linux环境下完全删除Oracle
  • oracle怎么删除用户提供解决方案
  • linux下如何卸载oracle?直接删除就可以么??
  • oracle单库彻底删除干净的执行步骤
  • 删除Oracle中奇怪的表名称BIN$…的方法
  • linux oracle数据库删除操作指南
  • oracle数据库添加或删除一列的sql语句
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • linux下通过对文件读取方式查询oracle的版本信息
  • 参加Oracle认证的两种考试方式
  • Oracle解锁的方式介绍
  • Linux操作系统下Oracle数据库多实例启动方式及修改内存
  • 如何实现将客户机上的word文件,以B/S方式最终存入oracle数据库?
  • Oracle数据库的四种启动方式
  • oracle中得到一条SQL语句的执行时间的两种方式
  • 基础知识:Oracle数据库的启动方式
  • oracle中修改表名的几种方式
  • Oracle数据库三种的封锁方式
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle将字符编码从GBK转到UTF8,如何操作比较稳妥?
  • Oracle date如何比较大小分析
  • SAP ERP 与Oracle ERP 比较
  • Oracle In和exists not in和not exists的比较分析
  • Oracle与MySQL学习体会比较
  • Oracle备份功能比较
  • oracle数据库删除数据Delete语句和Truncate语句的使用比较
  • SQL Server和Oracle并行处理比较分析
  • 常见数据库系统比较 Oracle数据库
  • Oracle中spool命令实现的两种方法比较
  • 性能陷阱:Oracle表连接中范围比较
  • DB2常用函数与Oracle比较
  • Oracle与SQL Server在企业应用的比较
  • Oracle8i和Microsoft SQL Server比较
  • oracle下一条SQL语句的优化过程(比较详细)
  • DB2和 Oracle的并发控制(锁)的比较
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 虚拟机装Oracle R12与Oracle10g
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle 数据库开发工具 Oracle SQL Developer
  • Oracle 10g和Oracle 11g网格技术介绍
  • Oracle EBS R12 支持 Oracle Database 11g
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • Oracle 数据库(oracle Database)性能调优技术详解
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • ORACLE日期相关操作


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,