添加具有默认值的列

use*_*874 5 oracle oracle11g

我有一张桌子A(3列),大约有1000万条记录.我想在该表中再添加一列,并且我希望将默认值设置为1.是否会影响生产数据库性能如果添加默认值为1的列或其他内容.什么是最好的方法来避免对DB的任何性能影响?你的想法非常感谢!!

Nic*_*nov 10

在Oracle 11g中,添加具有默认值的新列的过程已经大大优化.如果指定了新添加的列NOT NULL,则在数据字典中维护该列的默认值,并且不再需要为表中的所有记录存储列的默认值,因此不再需要更新每个列记录默认值.这种优化大大减少了在操作期间表被独占锁定的时间量.

 alter table <tab_name> add(<col_name> <data_type> default <def_val> not null)
Run Code Online (Sandbox Code Playgroud)

此外,添加该方式的默认值的列不会消耗空间,直到您故意开始更新该列或插入具有该列的非默认值的记录.因此,添加具有默认值和not null约束的新列的操作非常快.