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

2021-07-26 19:24:07 字數 1174 閱讀 9317

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

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

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

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

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

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

下面介紹下我的方法。

舉個例子,然後上指令碼吧。

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

指令碼如下:

------------------指令碼開始-----------------

-- 建立臨時表

create table a_temp

tablespace atemp

nologging

as 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的資料表,三分鐘內可以搞完。

如何刪除oracle

軟體環境 1 windows 2000 oracle 8.1.7 2 oracle安裝路徑為 c oracle 實現方法 www.bianceng.cn 1 開始 設定 控制面板 管理工具 服務 停止所有oracle服務。2 開始 程式 oracle orahome81 oracle install...

多行刪除最快的方法

由於我的資料是資料庫提取的,rs.getstring id 所以我在checkbox裡面的value直接等於得到的字串,在處理頁面我們 先轉換字元編碼 然後獲取checkbox的name,直接就獲取到資料庫提取的值了,接著我們宣告乙個陣列ids 判斷他的長度,然後ids ids id i 解釋一下為...

如何徹底的刪除Oracle

oracle 的刪除是比較複雜的 如若刪除的不徹底的話 那麼再次安裝的時候就會出現這樣那樣的錯誤導致程式無法安裝 如何徹底的刪除oracle呢 1.關閉所有的與oracle有關的所有的服務 2.命令列輸入regedit 進入登錄檔 選擇hkye local machine 下的software 刪除...