1 TB、600 mの行のテーブルがあり、インデックス付きの列、具体的には選択クエリで使用されない主キー列のクラスター化インデックスの選択が誤っています。
この行からクラスター化インデックスを削除し、他のいくつかの行に作成したいと思います。
テーブルは現在次のようになっています。
colA(PK、nvarchar(3))[クラスター化されたインデックスpt b]
colB(PK、bigint)[クラスター化されたインデックスpt a]
colC(DateTime)[非クラスター化インデックス]
colD(お金)[非クラスター化インデックス]
colE(ビット)[インデックスなし]
colF(ビット)[インデックスなし]
colG(int)[インデックスなし]
より多くのインデックス付けされていない列
次のように変更したいと思います。
colA(PK、nvarchar(3))[クラスター化されたインデックスpt a]
colB(PK、bigint)[非クラスター化インデックス]
colC(DateTime)[非クラスター化インデックス]
colD(お金)[クラスター化されたインデックスpt d]
colE(ビット)[クラスター化されたインデックスpt b]
colF(ビット)[クラスター化されたインデックスpt c]
colG(int)[clustered index pt e]
より多くのインデックス付けされていない列
2つの質問:1)この変更にかかる時間はどれくらいだと思いますか(メッセージの最後にあるサーバーの仕様)。残念ながら、これはライブDBであり、どのくらいの期間ダウンするかをある程度把握していなければ、ダウンタイムを発生させることはできません。
2)クラスター化インデックスに非常に多くの列を追加するのはひどい考えですか?更新はほとんど実行されません。多くの挿入と選択があり、提案されたすべてのインデックス付き行を常に選択パラメーターとして使用します。
サーバー仕様:RAID5の5x 15kRPMドライブ、MS-SQL Sever 2005、およびそれらを実行し続けるためのいくつかのビット。