查了好多資料,發現還是不全,干脆自己整理吧,至少保證在我的做法正確的,以免誤導讀者,也是給自己做個記載吧!
????網上形形色色刪除重復數據的法方就是沒見過這類:
????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!”
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
