巨大的表中的ALTERING列的影响NOT NULL到NULL

时间:2009-12-09 11:32:54

标签: sql-server tsql vldb

SQL Server 2005: 240万行表。 列要求从NOT NULL更改为NULL。

通常不好的做法(通常是不可能的)在处理这么大的表时使用ALTER语句,但是,如果可能的话,尽量避免重建表。

针对包含20m行的dev表测试ALTER语句,并且该语句在< 1秒内成功执行。

问题:这似乎应该对庞大的生产表起作用......但任何人都可以根据经验指出风险或影响(明显的除外)?

非常感谢。

3 个答案:

答案 0 :(得分:2)

从NOT NULL到NULL的更改很好,因为不需要检查/更改现有数据。 然而,另一个方向需要检查所有现有数据;所以这可能有问题。

我建议你注意现有查询(当列仍然是NULL时写的)现在不会因为NULL值的可能性而被“破坏”。问题在于,在所有情况下确认逻辑仍然合理可能会很棘手,因为您不太可能收到任何明显的错误。

请注意聚合功能。

答案 1 :(得分:1)

在大桌子上自己做这件事没问题。

例如,如果您要更改数据类型或缩短列的大小,则会涉及更多工作。但是对于从NOT NULL到NULL的更改,它不应该过于繁重。

但是,作为标准方法,我会在安静的时间段内安排更新。

答案 2 :(得分:1)

从NOT NULL到NULL不应该是一个问题。我以前做过这个,并没有遇到过问题。

我能想到的唯一问题可能是获得整个表的锁定。