SQL Server 大表加非空字段
对于千万级以上的大表加非空的字段有三种方法:
1.直接加非空有默认值
ALTER TABLE dbo.TableA ADD Column_1 money NOT NULL CONSTRAINT DF_TableA_Column_1 DEFAULT 0
缺点:不能预估执行时间,执行时会锁住表,如果执行很久的话要考虑对生产环境的影响。
2.加运行为空;
然后分批次更新为默认值;
最后更改字段为非空有默认值
3.建立一个与原表TableA同样构架的表TableB,TableB加上非空有默认值的字段;
TableB中插入数据;
原表A重命名为其他表明(如TableA@20130901),TableB重命名为TableA。
优点:选项3,这可能是最好的,因为你仍然可以在数据库中“活”的,而这个操作是怎么回事。 如果您使用选项1,
表被锁定的操作发生时,那么你就真的坚持。
如有其他更好方法,欢迎留言。