REBUILD-クラスタ化インデックス、TABLE、またはその両方?


9

これに関する決定的なリソースをどこでも見つけるのに苦労しているので、グルがここで答えを出してくれるといいのですが。

列を追加する必要がある非常に大きなテーブルがあります。クラスタ化インデックスはかなり高度に断片化されておりALTER INDEX REBUILD、クリーンアップするために実行したいと思います。

また、通常はALTER TABLE REBUILD列を変更するときにも行います。これにより、その操作からのポインターまたは分割がクリーンアップされるためです。

クラスター化インデックス(基本的にはテーブル)について話しているので、両方を実行する必要がありますか?

私の疑いは、ALTER INDEX REBUILDクラスター化された意志が意志のすべてを更新するわけではないALTER TABLEことですがALTER TABLE、インデックスの断片化がクリーンアップされないことも心配です。


IIRC再構築は、列統計を更新しません。どちらの場合も発生しないので、これは関連があるのではないでしょうか。:-)
アーロンバートランド

回答:


6

クラスタ化インデックスを再構築する場合、テーブルを再構築する必要はありません。テーブルがヒープであった場合(クラスター化インデックスがない場合)、テーブルを再構築することができます。


列を削除するALTER TABLE REBUILDと、インデックスの再構築で修正されなかったポインタが修正されるため、を実行する必要があることを以前に読んだことがあります。これはもはやそうではありませんか?
JNK 2012

どんなポインタ?聞いたことがない。あなたはTEXT、NTEXT、SQL 2000の画像データの種類について話している場合を除き、列を削除すると、任意のポインタを持っていない
mrdenny

1
私の懸念は根拠がないと思います...
JNK 2012

@JNK:droppimg列がクラスター化インデックスstackoverflow.com/a/808368/27535およびdba.stackexchange.com/search?q=%2BDBCC+%2BCLEANTABLE
gbn

0

再構築は、インデックスを削除して再作成します。クラスタ化インデックスを作成すると、CIXの作成に加えて、テーブルの行が並べ替えられます(CIXのないテーブルはヒープです)。


4
再構築では、クラスター化インデックスは削除および再作成されません。クラスタ化インデックスを削除すると、テーブルがヒープになります。再構築が「ドロップして再作成」する場合、テーブルがヒープである中間状態になる必要がありますが、これは正しくありません。中間ヒープステージがないと私が信じていない場合は、そのような中間ヒープ状態が達成された場合、「再作成」にはソートが必要であることを考慮してください。
Remus Rusanu 2012

RRさん、よろしくお願いします。投稿を読んで楽しんでいますが、なぜこの点について議論するのかわかりません。私はすでに公式のMSDNをリンクしました。「インデックスの再構築」セクションの半分ほど下から、1番目のステートメント:「インデックスの再構築により、インデックスが削除され、再作成されます。」そのステートメントにはあいまいさはありません。ここに再びあります:msdn.microsoft.com/en-us/library/ms188388.aspx
Eric Higgins

1
BOLとMSDNは、時々、何度も何度も言い回しの形を選択するのが難しいかもしれません...これはそのような場合でしょう。
Remus Rusanu 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.