SQL Server 2005: 240万行表。 列要求从NOT NULL更改为NULL。
通常不好的做法(通常是不可能的)在处理这么大的表时使用ALTER语句,但是,如果可能的话,尽量避免重建表。
针对包含20m行的dev表测试ALTER语句,并且该语句在< 1秒内成功执行。
问题:这似乎应该对庞大的生产表起作用......但任何人都可以根据经验指出风险或影响(明显的除外)?
非常感谢。
答案 0 :(得分:2)
从NOT NULL到NULL的更改很好,因为不需要检查/更改现有数据。 然而,另一个方向需要检查所有现有数据;所以这可能有问题。
我建议你注意现有查询(当列仍然是NULL时写的)现在不会因为NULL值的可能性而被“破坏”。问题在于,在所有情况下确认逻辑仍然合理可能会很棘手,因为您不太可能收到任何明显的错误。
请注意聚合功能。
答案 1 :(得分:1)
在大桌子上自己做这件事没问题。
例如,如果您要更改数据类型或缩短列的大小,则会涉及更多工作。但是对于从NOT NULL到NULL的更改,它不应该过于繁重。
但是,作为标准方法,我会在安静的时间段内安排更新。
答案 2 :(得分:1)
从NOT NULL到NULL不应该是一个问题。我以前做过这个,并没有遇到过问题。
我能想到的唯一问题可能是获得整个表的锁定。