国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

oracle如何最快的刪除大數據量表中的多個字段

2019-11-08 20:38:07
字體:
來源:轉載
供稿:網友

提到刪除表的字段,我們最初想到的就是alter table xx drop column field1;

但是當我們要對生產環境中大數據量的表進行刪除字段,而且不是刪除一個兩個,有可能刪除多個字段,此方法是否可取。網上有文章說到可以先對要刪除的字段進行unused的處理,然后在系統不忙的時候執行drop column,我個人認為此方法不是不可行,只不過我認為不是最快的。

我以我自己親身處理的一個例子,介紹下我的方法,僅供參考。

文章開始前,先講一下背景。

客戶生產環境中數據量增量很大,每個月都要有五六十G的增量。尤其是幾個大表,數據量每月都是千萬級增量。由于歷史原因,有的表中的字段多達200多個,但實際用到的字段也就只有七八十個,也就是有一百二三個字段要干掉,進行優化。

千萬級的數據表,要干掉一百二三十個字段,而且還要盡可能的不影響業務的運行。那就要求在業務最不繁忙的時候,以最快的速度處理完,怎么辦。

下面介紹下我的方法。

舉個例子,然后上腳本吧。

假如有個表A,A中的數據量是5000w以上,A中有200個字段,你要刪掉其中的120個字段。

腳本如下:

------------------腳本開始-----------------

-- 創建臨時表create table A_temptablespace ATEMPnologgingas select field1,field2,,,,field80    -- 此處需要整理出A中要保留的字段

 from A;

/-- 刪除原表drop table A;-- 重命名表ALTER TABLE A_temp RENAME TO A;-- 使用nologging以及parallel快速重新添加索引create index IND_Afile on A(field2) tablespace ATEMP nologging parallel 6;

alter table A add constraint PK_field PRimary key (field1) using index tablespace ATEMP  nologging;

------------------腳本結束-----------------

我自己試驗的結果是5000w的數據表,三分鐘內可以搞完。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰县| 宝坻区| 辽宁省| 子洲县| 绥滨县| 土默特左旗| 阿克| 澎湖县| 大埔区| 凤庆县| 乐清市| 略阳县| 灵川县| 乌恰县| 调兵山市| 香格里拉县| 巴彦县| 精河县| 东城区| 镇巴县| 青川县| 天水市| 沙湾县| 乐业县| 内黄县| 盘锦市| 合江县| 镇宁| 旬阳县| 土默特右旗| 二连浩特市| 嵩明县| 台江县| 静海县| 平利县| 信宜市| 金华市| 高雄市| 饶阳县| 巧家县| 宜春市|