在sql server中更改表中的列宽后,是否需要重新创建索引?

时间:2014-03-24 08:57:23

标签: sql-server indexing

我将列的宽度从varchar(8)增加到varchar(10)。我是否需要删除此列的索引并重新创建它?

2 个答案:

答案 0 :(得分:0)

无需删除并重新创建索引 - 因为它的元数据只会更改。 请查看以下链接以供参考。

Reference

答案 1 :(得分:0)

我不太确定我的问题。如果您在该列上有非聚集索引=>在删除索引之前,不能更改列的数据类型。

为什么呢?因为它必须为索引分配更多空间。

另一种选择是:

1 /禁用索引:

ALTER INDEX <indexname> ON <tablename> DISABLE;

2 /更改列的数据类型

ALTER TABLE <tablename> ALTER COLUMN <columnname> varchar(10) NOT NULL;

3 /重建索引(没有ALTER INDEX ... ENABLE):

ALTER INDEX <indexname> ON <tablename> REBUILD;