Reorganise index vs Rebuild Index in Sql Server Maintenance plan
SQL Server メンテナンスプランにおけるインデックスの再構成と再構築の違い
SQL Server では、インデックスの断片化を防ぎ、パフォーマンスを維持するために、定期的なメンテナンスが必要です。メンテナンスプランには、インデックスの再構成と再構築という2つの主要なタスクがあります。
インデックスの再構成は、インデックス内のデータページを再配置し、断片化を解消します。断片化は、データの挿入、更新、削除などによって発生します。
インデックスの再構築は、インデックスを完全に削除し、再作成します。これは、インデックスが論理的に破損している場合や、インデックスの定義を変更する場合に必要です。
それぞれの利点と欠点
タスク | 利点 | 欠点 |
---|---|---|
インデックスの再構成 | * オンラインで実行可能 * ダウンタイムが発生しない * ログファイルの増加が少ない | * データベースのサイズによっては時間がかかる * すべての断片化を解消できない |
インデックスの再構築 | * すべての断片化を解消できる * インデックスの統計情報を更新できる * インデックスの定義を変更できる | * オフラインで実行する必要がある * ダウンタイムが発生する * ログファイルが増加する |
メンテナンスプランでの使い分け
一般的には、以下の指針で使い分けることができます。
- インデックスの再構成: 定期的に実行し、断片化を抑制する。
- インデックスの再構築: 断片化がひどい場合、論理的な破損がある場合、インデックスの定義を変更する場合に実行する。
補足
- 上記は一般的な指針であり、状況によって使い分ける必要があります。
インデックスの再構成
USE [AdventureWorks2019]
GO
ALTER INDEX [IX_Product_Name] ON [Production].[Product]
REORGANIZE
GO
インデックスの再構築
USE [AdventureWorks2019]
GO
ALTER INDEX [IX_Product_Name] ON [Production].[Product]
REBUILD
GO
上記のコードは、AdventureWorks2019
データベースの Production.Product
テーブルにある IX_Product_Name
インデックスに対して、それぞれ再構成と再構築を実行します。
注意事項
- 上記のコードを実行する前に、データベースのバックアップを取ることをお勧めします。
- インデックスの再構築は、テーブルのロックを伴うため、実行中は他のユーザーがテーブルにアクセスできなくなります。
インデックスの再構成と再構築を行うその他の方法
SSMS を使用して、インデックスの再構成と再構築を行うことができます。
- SSMS を開き、データベースに接続します。
- オブジェクトエクスプローラーで、インデックスを再構築または再構成したいテーブルを選択します。
- テーブルを右クリックし、「インデックス」を選択します。
- インデックスの一覧が表示されます。再構築または再構成したいインデックスを選択します。
- 右クリックし、「プロパティ」を選択します。
- 「プロパティ」ウィンドウが表示されます。「インデックスの再構成」または「インデックスの再構築」を選択します。
- 必要に応じて、オプションを設定します。
- 「OK」をクリックします。
- インデックスの再構成
ALTER INDEX [IX_Product_Name] ON [Production].[Product]
REORGANIZE
GO
ALTER INDEX [IX_Product_Name] ON [Production].[Product]
REBUILD
GO
# インデックスの再構成
Get-Index -Database AdventureWorks2019 -Table Production.Product -IndexName IX_Product_Name | Rebuild-Index
# インデックスの再構築
Get-Index -Database AdventureWorks2019 -Table Production.Product -IndexName IX_Product_Name | Reorganize-Index
その他のツール
ApexSQL や Redgate SQL Prompt などのサードパーティ製ツールを使用して、インデックスの再構成と再構築を行うことができます。
sql-server rebuild maintenance-plan