2012-03-29 60 views

回答

1

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

您可以在线执行此操作,但如果表格很大,则可能会耗费大量时间。

+0

如何删除索引并在线创建它? – 2012-03-29 01:18:20

+0

@SriramSubramanian SQL Server企业版(2008和2008 R2 - 不确定大约在2005年)允许在线重建索引......但我不记得聚簇索引如何影响到在线索引重建 – jlnorsworthy 2012-03-29 03:38:00

+1

如果重建聚簇索引,则全部非聚集索引也将被重新创建,因为当重建发生时,它们使用聚簇索引作为其键 – datagod 2012-03-29 04:12:25

2

您可以更改聚簇索引的定义(即向键添加新列)作为在线操作。我没有一个实例来验证,但语法是类似以下内容:

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

的操作完全在线(表为您开放,读取,插入,更新和删除)。您需要企业版实例(因为只有EE支持联机索引构建操作),并且该表不能有LOB列(至少达到SQL Server 2012 it cannot)。

该操作是对表格进行全面重建,占用大量资源并会生成重要日志。

+0

的一部分,查询将执行表扫描或使用旧索引,直到新索引生成并删除那之后呢? – 2012-03-29 12:33:03

+0

[如何在线操作工作](http://msdn.microsoft.com/zh-cn/library/ms191261.aspx) – 2012-03-29 14:52:18

相关问题