求大神帮助。问题是这样的:
我现在需要处理一张有大量重复数据的表(800W条数据大概4,500W重复)。已用group by 和min(rowid)这种方法试验过了。效率太低了。求更快更效率的方法。处理重复数据Oracle效率删除
我现在需要处理一张有大量重复数据的表(800W条数据大概4,500W重复)。已用group by 和min(rowid)这种方法试验过了。效率太低了。求更快更效率的方法。处理重复数据Oracle效率删除
解决方案 »
- ORACLE MERGE INTO 向空表中插入数据
- 如何解释该跟踪文件
- 如何用一个Oracle库的存储过程访问另一个Oracle库的表?
- 大家好,我的oracle8.17装完用system/manager进来出现ora-01031:insufficient privileges该什么办
- 请问各位老师oracle有没有类似于server sql 2000数据库复制技术 实现数据同步更新的功能?
- Oracle菜鸟求教:如何增加Oracle的进程连接数呀?在线等待
- 十万火急,高分求助,求一个ORACLE过程!(100分)在线等待!
- 高手,,,韦什莫使用了Group by后,有些字段无法获取?
- 用户管理(在线等待)
- 求大神帮优化下查询
- sql主外键问题
- 关于数据库(数据仓库)设计的问题
create table ts (a number,b date);
begin
for i in 1..1000000 loop
insert into ts values(round(dbms_random.value(1,100)),sysdate);
end loop;
commit;
end;
--删除重复数据
create table ts1 as
select a, b
from (select a, b, row_number() over(partition by a order by b) rn from ts)
where rn = 1;
drop table ts;
alter table ts1 rename to ts;比你的下面的这样应该快很多
delete from ts a
where a.rowid != (select max(b.rowid) from ts b where a.a = b.a);
select a, b
from (select a, b, row_number() over(partition by a order by b) rn from tb1)
where rn = 1;truncate table tb1;insert into tb1 select * from tb2;