热情软件屋

 

如何提高在大于百万条记录的表中,检索重复数据的速度


编号: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回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio