2012-03-29 15 views

答えて

1

既存のインデックスには列を追加できませんが、追加の列を使用してインデックスを削除して再作成することはできます。

オンラインでも行えますが、テーブルが大きい場合は時間がかかります。

+0

どのようにインデックスを削除してオンラインで構築できますか? –

+0

@SriramSubramanian @SriramSubramanian SQL Server Enterprise Edition(2008年と2008 R2 - 2005年についてはわかりません)では、インデックスのオンライン再構築が可能ですが、クラスタ化インデックスがオンラインインデックスの再構築にどのように影響するかを再考しません。 – jlnorsworthy

+1

クラスタ化インデックスを再構築すると、非クラスタ化インデックスも再作成されます。再構築が発生すると、クラスタ化インデックスはキー – datagod

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まで)を入れることはできません。

操作は、テーブルが完全に再構築されており、リソースが多く、重大なログが生成されます。

+0

の一部として使用されるため、クエリはテーブルスキャンを実行するか、古いものを使用して新しいものが構築され、それ以降の古いもの? –

+0

[オンライン操作の仕組み](http://msdn.microsoft.com/en-us/library/ms191261.aspx) –

関連する問題