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;

  如此即可。

时间: 2024-10-02 23:43:45

Oracle比较快的删除重复数据的方式的相关文章

Attic——删除重复数据的备份程序

Attic--删除重复数据的备份程序 Attic是一个Python写的删除重复数据的备份程序,其主要目标是提供一种高效安全的数据备份方式.重复数据消除技术的使用使得Attic适用于日常备份,因为它可以只存储那些修改过的数据. Attic特性 空间高效存储 可变块大小重复数据消除技术用于减少检测到的冗余数据存储字节数量.每个文件被分割成若干可变长度组块,只有那些从没见过的组合块会被压缩并添加到仓库中. 可选数据加密 所有数据可以使用256位AES加密进行保护,并使用HMAC-SHA256验证数据完

Excel中删除重复数据

请仔细阅读并修改相关数据. 1.打开有重复数据的EXCEL 2.Alt+F11 打开宏编辑器 3.左边双击:ThisWorkBook 4.贴入以下代码并运行即可: Sub 删除重复数据() '删除col列的重复数据 '本例是删除标题为sheet1的EXCEL表中A列(从A2单元格开始)的重复数据 Application.ScreenUpdating = False '可根据实际情况修改下面三行的结尾值 Dim sheetsCaption As String: sheetsCaption = "S

Excel2003/2007中删除重复数据

大家在使用Excel表格总汇大批量数据时,难免会发现一些重复行和重复数据,这时我们就应该将那些重复的数据删除,以免会影响我们的工作,在Excel中删除重复数据和重复行的方法有N多,Excel2003删除重复数据和重复行方法: 第1种情况:重复行的内容完全一致 如下图所示,第2行和第4行的内容完全相同: 操作方法: 选中表中的所有记录(注意,此时应将每列的标题行也选择上,否则筛选完的数据表中将不再包含有该标题行),执行"数据"菜单→"筛选→高级筛 选"命令;在弹出的&

Excel中轻松查找删除重复数据(Excel 2007)

  由于重复输入或粘贴等原因,Excel 2007工作表往往存在重复的数据或记录.如果工作表的规模比较大,手工查找和删除重复数据很难做到"完全彻底".不过这个问题对Excel 2007来说则是"小菜一碟",下面就为大家介绍Excel中轻松查找删除重复数据 的技巧. 1.标识重复数据 打开工作表,选中可能存在重复数据或记录的区域.单击"开始"选项卡中的"条件格式"打开菜单,在"突出显示单元格规则"子菜单下选择

快速检索 轻松查找删除重复数据

  由于重复输入或粘贴等原因,Excel 2007工作表往往存在重复的数据或记录.如果工作表的规模比较大,手工查找和删除重复数据很难做到"完全彻底".不过这个问题对Excel 2007来说则是"小菜一碟",因为它的几个新功能可以轻松解决这类问题. 1.标识重复数据 打开工作表,选中可能存在重复数据或记录的区域.单击"开始"选项卡中的"条件格式"打开菜单,在"突出显示单元格规则"子菜单下选择"重复

Excel 2007中删除重复数据的办法

  Excel 2007中删除重复数据的办法 如果经常跟数据打交道,最头痛的莫过于收集到大量信息中,有一部分重复数据,如果找到并删除他们实在是一件麻烦的事情,不过在Excel 2007中可以很轻松的解决. 第一步:找到重复数据 首先打开Excel,选中需要整理的数据区域,然后选择"开始"选项卡中的"条件格式",在下拉菜单中选择"突出显示单元格规则/重复值",在弹出的"重复值"对话框中选择一个合适的样式,以便突出显示重复值,没有

sql 删除重复数据

sql 删除重复数据 本文章提供一款mysql删除重复数据,就是数据表中存在二条以上的重复数据,删除编号最小的一条信息. delete `borough_name` as a from fke_borough as a, ( select *,min(id) from fke_borough group by `borough_name` having count(1) > 1 ) as b  where a.`borough_name` = b.`borough_name` and a.id

SQL删除重复数据方法

原文:SQL删除重复数据方法 例如: id           name         value 1               a                 pp 2               a                 pp 3               b                 iii 4               b                 pp 5               b                 pp 6            

select-Mysql删除重复数据只保留一条

问题描述 Mysql删除重复数据只保留一条 Mysql删除重复数据只保留一条,我的sql这样的 DELETE from t_patient WHERE pa_iid IN (select pa_iid from t_patient group by pa_vname having count(pa_vname)>1) 但是报错了: [Err] 1093 - You can't specify target table 't_patient' for update in FROM clause 求