是否可以在sql server中的现有聚簇索引中添加一列?

时间:2012-03-29 00:18:06

标签: sql-server sql-server-2008

我想知道是否可以在sql server 2008中的表上为现有聚簇索引添加列?如果是这样,是否可以在线进行?

2 个答案:

答案 0 :(得分:2)

您可以更改聚集索引的定义(即向键添加新列)作为在线操作。我没有要验证的实例,但语法如下:

create clustered index [indexname] on [table]([column], [column], [column], ...)
with (drop_existing =on, online = on);

操作完全在线(表格打开以进行读取,插入,更新和删除)。您需要一个Enterprise Edition实例(因为只有EE支持在线索引构建操作),并且该表不能包含LOB列(至少最多SQL Server 2012 it cannot)。

该操作是对表的完全重建,资源很重,并且会生成重要的日志。

答案 1 :(得分:1)

您无法将列添加到现有索引,但可以删除索引并使用其他列重新创建该索引。

你可以在线进行,但如果桌子很大,这可能是一项繁重且耗时的操作。