gpt4 book ai didi

sql-server - 在 SQL Server 中有效地添加列

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:19 24 4
gpt4 key购买 nike

我想向具有大量行和许多索引的表(它是一个数据仓库事实表)添加一个整数列。

为了使行宽尽可能窄,此表中的所有列都定义为非空。所以我希望新列不为空,默认值为零。

根据经验,添加此列将花费一些时间,大概是因为数据库需要使用具有填充值的新列重写所有行。这大概会涉及更新聚簇索引和所有非聚簇索引。

所以我应该在添加列之前删除所有索引,然后重新创建它们。或者有更简单的方法吗?

我也不太明白为什么添加一个可为空的列要快得多。为什么这不涉及为每一行翻转一个额外的 Is Null 位来重新写入记录。

最佳答案

这将需要更新聚簇索引,是的 - 毕竟这表数据。

但我不明白为什么必须更新任何非聚集索引 - 您的新列不会成为任何非聚集索引的成员。

此外,我看不出在这种情况下删除和重新创建索引对您有何好处。如果您从另一个表或数据库中批量加载数百万个现有行——是的,那么它可能会更快(因为 INSERT 快得多)——但是添加一个列并不会真正受到任何索引或约束的影响,我不认为。

马克

关于sql-server - 在 SQL Server 中有效地添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/756470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com