如何提高在大于百万条记录的表中,检索重复数据的速度
编号:QA000436
建立日期: 1999年1月27日 最后修改日期:1999年1月27日
所属类别:
wanghs:
硬件:IBM 小型机, PC
软件:Oracle(Unix) Procedure Builder/Win95
如何提高在大于百万条记录的表中,检索重复数据的速度?
我使用两个游标做嵌套循环检索,结果速度太慢。
回答:
“检索重复数据”是什么意思?如果是两条基本一样的数据的话,下面的SQL一试:
desc za11
----------
cdmsg varchar2(8) not null
errcode varchar2(80)
如果只是SELECT的话:
select a.rowid , a.cdmsg,b.rowid from za11 a , za11 b
where a.cdmsg= b.cdmsg
and a.rowid <> b.rowid
如果要DELETE的话,就比较复杂。可以试一下下面的SQL,但速度不一定会快
delete za11
where za11.rowid in
(select a.rowid from za11 a , za11 b
where a.cdmsg= b.cdmsg
and a.rowid <> b.rowid
and a.rowid <> (select min(rowid) from za11));
如果一定要速度快可以先用SELECT+distinict将数据读入变量再将所有重复数据DELETE,再Insert即可。
此问题由Angel WorkGroup回答。
| |
|
|
| |
|
|