我有像以下的SQL查询:
insert into dedupunclear
select mdnnumber,poivalue
from deduporiginal a
where exists (
select 1
from deduporiginal
where mdnnumber=a.mdnnumber and rowid<a.rowid)
or mdnnumber is null;
我的重复数据删除原则中有500K记录。我把这个查询放在函数中,但是需要大约3小时才能将记录提交到dedupunclear表。
有解决性能问题的替代方法吗?
当此查询提交记录时,在某个时间间隔或从select
查询获取所有结果后?
答案 0 :(得分:1)
这就是我前几天做的事情:
delete from table a
where rowid >
(select min(rowid) from table b
where nvl(a.id, 'x') = nvl(b.id, 'x') )
我只是直接从登台表中删除了行,而不是插入到重复数据删除表中。对于包含100万行的表,此查询工作得很好。我担心nvl函数会杀死索引,但它运行得很好。