【发布时间】:2010-10-19 21:06:45
【问题描述】:
我想在具有大量行和许多索引的表中添加一个整数列(它是一个数据仓库事实表)。
为使行宽尽可能窄,此表中的所有列都定义为非空。所以我希望新列不为空,默认为零。
根据经验,添加此列需要一些时间,可能是因为数据库需要用填充值的新列重写所有行。这大概会涉及到更新聚集索引和所有非聚集索引。
所以我应该在添加列之前删除所有索引,然后重新创建它们。 或者有更简单的方法吗?
另外,我真的不明白为什么添加一个可为空的列要快得多。为什么这不涉及重写记录并为每一行翻转一个额外的 Is Null 位。
【问题讨论】:
-
“为使行宽尽可能窄,此表中的所有列都定义为非空” - 这是如何工作的?
标签: sql-server database performance indexing nullable