5

SQL Server 2005でクラスター化インデックスを非クラスター化インデックスに、または非クラスター化インデックスをクラスター化インデックスに変換することは可能ですか.

このクエリをクラスター化インデックスに変換してください:

create index index1 on mytable(firstcolumn)

このクエリを非クラスター化インデックスに変換してください:

create clustered index clusindex1 on mytable(cluscolumn)
4

3 に答える 3

6

目に見える以上のものがあります

クラスタ化インデックスを作成するには

drop index mytable.clusindex1 
go

create clustered index clusindex1 on mytable(cluscolumn)

非クラスター化インデックスを作成するには

drop index mytable.clusindex1 
go

create index clusindex1 on mytable(cluscolumn) --non clustered is default

ただし、テーブルごとにクラスター化インデックスを 1 つしか持てないため、インデックスを削除してクラスター化インデックスとして再作成しようとすると、クラスター化インデックスが既にある場合は失敗します。クラスター化インデックスを削除すると、クラスター化されていないすべてのインデックスも削除され、ヒープを指すように再作成されます。クラスター化インデックスを作成すると、再び削除されて再作成され、クラスター化インデックスを指すようになります (WITH DROP_EXISTING 句を調べます)。

インデックスの削除と再作成を開始する前に、Books On Line でのインデックス作成の仕組みを調べてください。

于 2010-08-29T17:48:58.470 に答える
3

これらはクエリではありません。これらは DDL コマンドです。次のように、必要に応じてインデックスを削除して再作成します。

drop index mytable.index1
go

create nonclustered index index1 on mytable (firstcolumn asc)
go
于 2010-08-29T17:37:54.753 に答える
-1

また、クラスター化インデックスを非クラスター化インデックスに変換 (変更) できるかどうかも知りたいと思いました。これができるとは思えません。最初に既存のクラスター化インデックスを削除してから、新しい非クラスター化インデックス (おそらくクラスター化インデックスと同じ名前) を作成する必要があります。非クラスター化インデックスをクラスター化インデックスに変換する場合も同様です。

「クエリ」の変換を求めている理由はわかりませんが、質問に含めたコードが実際にはクエリではないという点で@Tahbazaは正しいです。これらは、'データ定義' (つまり、データベースのスキーマ [構造]) を変更するための T-SQL ステートメントです。

于 2012-04-20T15:55:22.783 に答える