web-dev-qa-db-ja.com

10 GBの制限により、最小量のデータベースファイルスペースを使用してMircosoft SQL Server Expressでインデックスを再構築する方法

10GBの制限により、最小量のデータベースファイルスペースを使用してMircosoft SQL Server Expressでインデックスを再構築する方法

私は7GBのデータベースファイルサイズを持っていますが、非常に断片化されている2つの最大のテーブルにある2つのインデックスがあります enter image description here

インデックスPK_Sale_Dtlを再構築しようとすると、ファイルサイズが10GBに膨らみ、再構築が失敗してどこにも行きませんが、インデックスを削除して再作成しても、ファイルはほとんど増加しません

どうしてこれなの?そして、どちらがより良いインデックスを再構築または再作成しますか?

3
craigster

その理由は、インデックスの再構築とは、カバーの下で新しいインデックスを作成し、then古いインデックスを削除することを意味するためです。つまり、オペレーションの実行中は、2倍の容量のストレージが必要です。それができない場合は、基本的に2つのオプションがあります。

逆の順序でそれを自分で行います。最初にドロップして、then createにします。

または、REBUILDの代わりにREORGANIZEを実行します。

6
Tibor Karaszi

どうしてこれなの??そして、どちらがインデックスを再構築または再取得する方が良いですか?

インデックスを再構築すると、既存のインデックスがそのまま残り、新しいインデックスが構築され、古いインデックスが削除されます。

したがって、再構築中にクエリでインデックスを使用できるようにする必要がない場合は、再構築する前に、インデックスを削除/作成するか無効にしてください。

インデックスを無効にすることは、それを削除することと同じですが、インデックスDDLを覚えておく必要はありません。例えば

alter index ix_SomeIndex on SomeTable disable;
alter index ix_SomeIndex on SomeTable rebuild;