(他のテーブルのデータ、計算などに基づいて)新しいデータを挿入する前に、約175万行のテーブルを切り捨てるストアドプロシージャがあります。
基本的なアウトラインは非常にシンプルです:
このプロセスでいつでも明示的にインデックスを再構築する必要があるかどうか疑問に思っていますか?例えば.
ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90)
[または類似したもの]多分
ALTER INDEX ALL ON xxx DISABLE
_ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90)
[または類似したもの]どんな支援も感謝します... DBAではなく-DBをかなりよく知っている開発者はより正確です!
このタイプのほとんどの質問と同様に、状況によって異なります。関連するすべてのインデックスについてデータを「正しい」順序で挿入することはほとんどありません。つまり、これらのインデックスはすべて、挿入プロセス中に多くのページ分割が発生する可能性があります。したがって、クラスター化インデックスの順序で挿入していると仮定しましょう。すべての非クラスター化インデックスを無効にし、切り捨てて挿入を実行してから、すべての非クラスター化インデックスを再構築できます。もちろん、両方のアプローチを試すと、その背後にある理論に関係なく、どちらが真実であるかがわかります。 :)
すべてのインデックスを有効にしてBasicを計画すると、速度が遅くなり、断片化が発生する可能性があります。
切り捨てられた、したがって空のテーブルでのALTER INDEX REBUILDは目的を果たさないため、プランAを修正する必要があります。
遅いかもしれませんが、少なくともシャープなインデックスが得られます。
プランBで結構です。 3つすべてをテストし、どれが最も速く、どちらがインデックスの断片化を最小限にするかを確認します。次に、再構築する価値があるかどうかを判断します。