2013-04-08 14 views
6

text列のインデックスを作成するテーブルにクラスタ化インデックスがあります。 IDのような別の列でその列を切り替えるにはどうすればインデックスを変更できますか?クラスタ化インデックス列を変更します。

これはAzure上で実行されており、常にインデックスがクラスタ化されている必要があるため、削除して再作成できません。

インデックス内のインデックス列を変更するためのSQLコマンドと構文。

alter index?

+0

カントあなたが必要な列に新しいクラスタ化インデックスを追加し、古いものをドロップしますか? –

+0

@AjoKoshy:いいえ - テーブルに複数のクラスタード・インデックスを持つことはできません! –

答えて

5

クラスタ化インデックスを変更することはできません。

唯一のオプションは、削除して新しい列で再作成することです。

場合によっては、新しいクラスタ化インデックスIDを使用してテーブルを再作成し、データをコピーする必要があります。

9

これを試してみてください:

create clustered index [your_index_name] 
on [your_table] 
    ([ID]) 
with (drop_existing = on) 
+0

それは私のために働いていませんでした: メッセージ1907、レベル16、状態1、行1 インデックス 'my_index_name'を再作成できません。新しい索引定義は、既存の索引によって強制される制約と一致しません。 –

+1

私の推測では、クラスタード・インデックスも主キーです。その場合、削除して再作成する必要があります。 –

+1

これは、主キーのクラスタ化されたインデックスがない場合に効果的です。ありがとう! – kspearrin

関連する問題