索引临时表【Oracle】比较快的删除重复数据的方

系统 1565 0

查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记载吧!

    网上形形色色删除重复数据的法方就是没见过这类:

    DELETE FROM prod_grid_inc

    WHERE  ROWID IN (SELECT b.row_id2

                 FROM   (SELECT ROWID row_id2,

                                a.*,

                                row_number() over(PARTITION BY a.prod_id ORDER BY a.insert_date DESC) row_num

                         FROM   prod_grid_inc a) b

                 WHERE  b.row_num >= 2);

    大家不妨尝尝,经过实验,的确快了不少。

    如果是几G的大表(这类时候一般是分区表),这类情况最好是append+nologging式方,将一唯记载insert到临时表中,然后通过换交分区的式方换交去过,前后只要需几分钟,其中临时表的表空间和索引表空间要合符正式表的要求:

    每日一道理
生命,是一场漫长的棋局。这盘棋没有猎猎西风,没有四起狼烟,只有在取舍和进退中抉择。只有像棋中的小卒那样,勇往直前,毫不退缩沿着沟沟坎坎的人生之路,艰难而执着的求索,前进,才会谱写人生最壮丽的强者之歌。

    eg:

    INSERT /*+append*/ INTO ACCT_ITEM_MID

    SELECT *

  FROM ACCT_ITEM SUBPARTITION(P_201109_SUB_P_XX) a

 WHERE ROWID = (SELECT MAX(ROWID)

                  FROM ACCT_ITEM SUBPARTITION(P_201109_SUB_P_XX) a1

                 WHERE a.cust_id = a1.cust_id);

    COMMIT;

               

    ALTER TABLE ACCT_ITEM EXCHANGE SUBPARTITION P_201109_SUB_P_XX WITH TABLE ACCT_ITEM_MID;

    当然exchange的式方虽然快,但是这类情况会致导索引效失,要需重建索引:

    alter index ind_name rebuild subpartition subpartition_name;

    如此便可。

文章结束给大家分享下程序员的一些笑话语录: 一位程序员去海边游泳,由于水性不佳,游不回岸了,于是他挥着手臂,大声求.救:“F1,F1!”

索引临时表【Oracle】比较快的删除重复数据的方式Strut2教程-java教程


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论