2013-10-07 177 views
4

我有一個表A(3列)在生產大約1000萬條記錄。我想再向該表中添加一列,並且我想將默認值設置爲1.是否會影響生產數據庫性能如果添加具有默認值1或其他值的列。爲避免對數據庫造成任何性能影響,最佳方法是什麼?你的想法非常感謝!添加列的默認值

回答

8

在Oracle 11g中,添加了具有默認值的新列的過程已經大大優化。如果新添加的列被指定爲NOT NULL,那麼該列的默認值將保留在數據字典中,並且不再需要爲表中的所有記錄存儲列的默認值,因此不再需要用默認值更新每條記錄​​。這種優化大大減少了表格在操作過程中獨佔鎖定的時間。

alter table <tab_name> add(<col_name> <data_type> default <def_val> not null) 

而且具有缺省值的列補充說,這樣就不會佔用空間,直到你故意開始更新該列或插入一條記錄與該列非缺省值。因此,添加具有默認值和not null約束的新列的操作完成得非常快。

0

我認爲你創建一個表作爲備份表與此語法最好是:

create table BackUpTable as SELECT * FROM YourTable; 
alter table BackUpTable add (newColumn number(5,0)default 1);