在SQL Server中增加NVARCHAR列大小会导致索引重建吗?

时间:2012-03-29 15:18:48

标签: sql sql-server sql-server-2008 sql-server-2005 ddl

我有一个数据库表,其中包含数百万行的客户数据,并且需要修改从NVARCHAR(32)到NVARCHAR(50)的lastname字段。该字段上有一个索引(非群集)。我需要知道使用ALTER TABLE ALTER COLUMN语句进行此更改是否会自动重建索引。

如果是这样,我认为这需要相当多的时间。我们的生产升级过程是通过运行脚本的已发布安装程序完成的,我们需要预测升级需要多长时间。我们在SQL 2005和2008上都有相当大的数据库,所以如果它不同,我需要知道它们的答案。

我知道增加列的大小不应该修改像NVARCHAR这样的可变长度字段中的数据,并且在没有涉及索引的情况下,即使在大型数据集上也应该非常快。我不清楚的是索引是否会导致速度慢得多。

我在下面的链接中阅读了文档,但它实际上只是表明您可以使用现有索引进行更改,并且没有指定可能对ALTER TABLE语句的执行时间产生什么影响,或者是否索引必须在之后重建,或者自动完成,等等。

http://msdn.microsoft.com/en-us/library/ms190273.aspx

以下链接中的问题与我在这里提出的问题几乎完全相同,但在这篇文章中没有令人满意的答案,所以我想我会尝试新的帖子。

SQL Server 2005 Index rebuild when increasing the size of a varchar field

如果您有过相关经验,请告诉我。如果我可以在一个可以进行实验的大型数据库中设置测试系统,我会发布结果。

谢谢!

1 个答案:

答案 0 :(得分:3)

否 - 即使更改列大小(例如提到的nvarchar列),索引也永远不会在SQL Server中自动重建。索引会自动维护但不会重建。如果设置了DB选项'自动更新统计',则可以自动更新数据的统计/内部直方图。