DBCC DBREINDEX (Transact-SQL)
指定されたデータベース内のテーブルの 1 つ以上のインデックスを再構築します。
重要 : |
---|
この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。代わりに ALTER INDEX を使用してください。 |
構文
DBCC DBREINDEX
(
table_name
[ , index_name [ , fillfactor ] ]
)
[ WITH NO_INFOMSGS ]
引数
- table_name
指定されたインデックスを再構築するテーブルの名前です。テーブル名は識別子のルールに従っている必要があります。database.
- index_name
再構築するインデックスの名前です。インデックス名は、識別子のルールに従っている必要があります。index_name を指定するときは、table_name も指定する必要があります。index_name を指定しない場合、または '' に指定した場合は、テーブルのすべてのインデックスが再構築されます。
fillfactor
インデックスの作成時または再構築時に、データの格納に使用される各インデックス ページの領域の割合を指定します。fillfactor はインデックス作成時の FILL FACTOR を上書きし、そのインデックス、およびクラスタ化インデックスが再構築されたために再構築される他の非クラスタ化インデックスに対する新しい既定値となります。fillfactor が 0 の場合、DBCC DBREINDEX はインデックスに対して最後に指定された FILL FACTOR 値を使用します。この値は、sys.indexes カタログ ビューに格納されます。fillfactor を指定するときは、table_name および index_name も指定する必要があります。fillfactor を指定しない場合は、既定の FILL FACTOR 値 100 が使用されます。詳細については、「FILL FACTOR」を参照してください。
- WITH NO_INFOMSGS
重大度レベル 0 ~ 10 のすべての情報メッセージを表示しないようにします。
結果セット
NO_INFOMSGS 以外のいずれかのオプションが指定されている場合 (テーブル名の指定が必要)、DBCC DBREINDEX は以下を返します。
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
解説
DBCC DBREINDEX では、テーブルの 1 つのインデックス、またはテーブルに対して定義されているすべてのインデックスを再構築します。インデックスを動的に再構築できれば、PRIMARY KEY 制約または UNIQUE 制約を削除して再作成しなくても、それらの制約を強制しているインデックスを再構築できます。したがって、テーブルの構造やその制約がわからない場合でも、インデックスを再構築することができます。インデックスの再構築は、テーブルにデータを一括コピーした後に実行できます。
DBCC DBREINDEX では、1 つのステートメントでテーブルのすべてのインデックスを再構築できます。これは複数の DROP INDEX ステートメントと CREATE INDEX ステートメントをコーディングするより簡単です。DBCC DBREINDEX は、1 つのステートメントで作業を行うため最初からアトミックです。これに対して、個々の DROP INDEX ステートメントと CREATE INDEX ステートメントをアトミックにするためには、トランザクションに含める必要があります。また、DBCC DBREINDEX を使用した方が、個々の DROP INDEX ステートメントと CREATE INDEX ステートメントを使用するよりも最適化の点で利点があります。
DBCC INDEXDEFRAG や、REORGANIZE オプションを使用した ALTER INDEX とは異なり、DBCC DBREINDEX はオフライン操作です。非クラスタ化インデックスを再構築する場合、操作中は、該当のテーブルに対して共有ロックが保持されます。これにより、テーブルが変更されなくなります。クラスタ化インデックスを再構築する場合は、排他テーブル ロックが保持されます。これにより、テーブルに一切アクセスできなくなり、実質的にテーブルはオフラインになります。インデックスの再構築をオンラインで実行したり、インデックスの再構築操作中に並列処理の程度を制御したりするには、ALTER INDEX REBUILD ステートメントに ONLINE オプションを付けて使用してください。
インデックスを再構築または再構成する方法の選択の詳細については、「インデックスの再編成と再構築」を参照してください。
DBCC DBREINDEX は、システム テーブルの使用をサポートしていません。
権限
呼び出し元はテーブルを所有しているか、固定サーバー ロール sysadmin、固定データベース ロール db_owner、または固定データベース ロール db_ddladmin のメンバである必要があります。
例
A. インデックスを再構築する
次の例では、AdventureWorks
データベースの Employee
テーブルで、Employee_EmployeeID
クラスタ化インデックスを FILL FACTOR 80
で再構築します。
USE AdventureWorks;
GO
DBCC DBREINDEX ("HumanResources.Employee", PK_Employee_EmployeeID,80);
GO
B. すべてのインデックスを再構築する
次の例では、AdventureWorks
の Employee
テーブルのすべてのインデックスを、FILL FACTOR 値 70
で再構築します。
USE AdventureWorks;
GO
DBCC DBREINDEX ("HumanResources.Employee", " ", 70);
GO
参照
関連項目
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC (Transact-SQL)
sys.indexes (Transact-SQL)
sys.dm_db_index_physical_stats
ALTER INDEX (Transact-SQL)