0

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

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

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

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

非常感谢。

4

3 回答 3

2

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

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

注意聚合函数。

于 2009-12-09T14:44:42.687 回答
1

我自己在大桌子上做这件事从来没有遇到过问题。

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

但是,作为一种标准方法,我会在安静的时期安排更新。

于 2009-12-09T11:40:18.473 回答
1

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

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

于 2009-12-09T11:57:49.223 回答