高效删除大表重复记录的解决方案
2012-12-17 19:45
501 查看
---ddl before CREATE bitmap index BIT_IDX_DATA_SRC on t1(DATA_SRC) NOLOGGING; create index IDX_ID_Number on t1(ID_NUMBER) NOLOGGING; ANALYZE INDEX BIT_IDX_DATA_SRC COMPUTE STATISTICS; ANALYZE INDEX IDX_ID_Number COMPUTE STATISTICS; --创建结构一致的中间永久表(DDL无undo非常节省资源)IN ('CBRC', 'CBRC File') ----非常关键的一步 CREATE TABLE t1_mid tablespace TBS_LS_DATA pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ) AS SELECT * FROM t1 t1 WHERE t1.record_id = (SELECT MAX(t2.record_id) FROM t2 t2 WHERE t2.data_src IN ('CBRC', 'CBRC File') AND t1.id_number = t2.id_number) AND t1.data_src IN ('CBRC', 'CBRC File'); --NOT IN ('CBRC', 'CBRC File') INSERT INTO t1_mid SELECT * FROM blacklist a WHERE a.data_src NOT IN ('CBRC', 'CBRC File'); COMMIT; -----ddl after TRUNCATE TABLE t1; DROP INDEX BIT_IDX_DATA_SRC; DROP INDEX IDX_ID_Number; --移动数据从中间表到最终表 INSERT INTO t1 SELECT * FROM blacklist_mid; /*INSERT INTO t1 select * From (SELECT * FROM blacklist_mid order by 1) where rownum<=1000000;*/ ANALYZE TABLE t1 COMPUTE STATISTICS; --收集统计信息 --清理环境 DROP TABLE t1_mid;
相关文章推荐
- 删除重复记录的完整解决方案
- oracle 删除重复记录的高效方法
- 高效快速删除Oracle表中重复记录
- Oracle最高效的删除重复记录方法
- 最高效的删除重复记录方法
- Oracle删除重复记录oracle 删除重复记录的高效方法 && mysql 删除重复记录方法
- ORACLE中最高效的删除重复记录方法
- oracle最高效的删除重复记录方法
- 高效删除ArrayList中的重复记录,不多说看代码
- 最高效的删除重复记录方法
- 如何删除表中的重复记录?等等常用SQL语句的积累
- mysql删除重复记录
- 处理表重复记录(查询和删除)
- 转 sql删除重复记录
- SQL删除表中有重复的记录
- 在SQL Server中快速删除重复记录(多图)
- 删除表中的重复记录
- SQL中删除重复记录
- MySQL查询及删除重复记录的方法
- 删除重复记录的SQL语句