ALTER TABLE具有默认值:SQL Server与Oracle

时间:2012-09-24 15:26:23

标签: sql-server database oracle

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

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

1 个答案:

答案 0 :(得分:0)

在SQL Server 2012之前添加NULLable列没有默认值非常大,但添加DEFAULT约束会很慢,因为每行都必须更新。从SQL Server 2012 adding a DEFAULT is also fast, a metadata only operation开始,如果可能的话。