そのため、パフォーマンスが大幅に低下しているという不満がある顧客サイトがあります。一見したところ、問題はSomebody Else(grrrr)がクラスター化インデックスなしで約2,000万以上のレコードを保持するテーブルを設計したことが原因であることは明らかです。
次に、そのテーブルにクラスター化インデックスを作成します。ただし、テスト環境ではcreate index
コマンドが1時間実行されましたが、まだ完了していません。カスタマーサイトは24時間365日稼働する製造現場であり、インデックスを作成する間、1時間のダウンタイムを許容できません。
インデックスを作成するブルートフォース方式があまりない方法で、ジョブをすばやく終了したり、ビジー状態のときにサーバーのパフォーマンスを完全に停止させないスマートな方法で実行したりできますか?
SQL Server Enterprise Editionを使用しています。
SQLサーバーがEnterprise +エディションで、テーブルにBLOBフィールドがない場合-CREATE CLUSTERED INDEX ... WITH(ONLINE=ON)
そうでない場合-同じスキーマを使用してテーブルを作成し、すべてのINSERT/UPDATE/DELETE操作を含めて(たとえば、トリガーを使用して)データを適切に転送し、古いテーブルを正確に削除して名前を変更する以外に方法はありません古いものと同じ名前の新規-短所:遅い、サーバーとストレージに追加の負荷を追加
顧客が使用しているSQLサーバーのバージョンがわからない。企業では、(ONLINE = ON)を使用してインデックスを作成できるため、インデックスが作成されるまでテーブルを使用できます。
元から必要とされていた権限を適用していることを確認してください。