MSSQL 2012、ステージングエリア、EDW、キューブ、レポートに構築されたデータウェアハウスがあります。
ステージング領域では、テーブルは、DWHを埋めるために使用されるシステムをサポートするテーブルの1:1コピーです。ステージングエリアテーブルはTRUNCされ、毎日(毎晩)補充されます。次に、それらのテーブルのビューは、EDWへのETLプロセスの入力を提供します。
EDWで使用できるコピーを提供することに加えて、これらのステージングテーブルは、クエリでソースシステムに圧力をかけないように、一部のアナリストによってMSSQL Management Studioを使用してクエリされます。
EDW向けのETLとアナリストのクエリの両方について、これらのテーブル(の一部)にインデックスを付けるとパフォーマンスが(大幅に)向上する可能性があると思います。毎日TRUNCされる(大きな)テーブルにインデックスを作成することは賢明ですか?そうでない場合、なぜですか?そして、どのような種類のインデックス(クラスター化vs非クラスター化vs完全に他のものか)?
これらのコピーされたテーブルはETL(選択クエリによる)にのみ使用されることを除いて、あなたが説明したのと同様の状況があります。私たちがそれにどのように取り組んだかを説明しますが、それが環境に有効かどうかを評価する必要があります(質問に対するJon Seigelのコメントを参照)。
コンセプトは簡単です:
このアプローチは私たちにとってはうまくいき、ドロップ/再作成はインデックス付きテーブルにロードするよりも高速です。列ストアインデックスの場合、パーティション分割とパーティションスイッチの使用を除いて、他に多くのオプションはありませんが、これらのテーブルに対してはそうしません(EDWファクトテーブルは別の話です)。