0

我们在一个有几百万行的 Oracle 数据库中有一些表。当我们更改其中一个表以添加新列时,我们指定一个默认值。这运行起来非常慢,因为 Oracle 必须使用默认值更新所有现有行。解决方案是确保该列被定义为 NOT NULL,因为这样 Oracle(仅限最近的版本)将不会使用默认值更新所有现有行 - 随后在这些列之一中出现空值会告诉 Oracle 它需要一个默认值并且它将即时提供默认值。

我的问题是关于 SQL Server:它在添加列并提供默认值时是否表现出类似的行为?如果没有,是否有任何最佳实践可以有效地添加具有默认值的新列,并且将列定义为 NOT NULL 是否有任何优势?

4

1 回答 1

0

在 SQL Server 2012 之前,添加不带默认值的 NULLable 列非常庞大,但添加 DEFAULT 约束会很慢,因为必须更新每一行。由于 SQL Server 2012添加 DEFAULT 的速度也很快,如果可能的话,只进行元数据操作。

于 2012-09-24T15:45:05.063 回答