国产探花免费观看_亚洲丰满少妇自慰呻吟_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的數據表,三分鐘內可以搞完。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥化市| 宝丰县| 休宁县| 五常市| 常德市| 苍溪县| 南和县| 红河县| 新余市| 昌黎县| 宝山区| 陈巴尔虎旗| 连州市| 堆龙德庆县| 米脂县| 翼城县| 关岭| 青海省| 义马市| 沿河| 玛沁县| 白山市| 永兴县| 巴林左旗| 新兴县| 伊通| 乌拉特前旗| 遂平县| 邵阳县| 电白县| 廉江市| 新津县| 龙泉市| 新巴尔虎右旗| 于都县| 隆安县| 宝坻区| 定州市| 唐山市| 柯坪县| 台北县|