DBCC DBREINDEX (Transact-SQL)

指定されたデータベース内のテーブルの 1 つ以上のインデックスを再構築します。

重要な注意事項重要

この機能は、Microsoft SQL Server の将来のバージョンで削除されます。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションはできるだけ早く修正してください。代わりに ALTER INDEX を使用してください。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

DBCC DBREINDEX 
( 
    table_name 
    [ ,index_name [ ,fillfactor ] ]
)
    [ WITH NO_INFOMSGS ] 

引数

  • table_name
    再構築するよう指定したインデックスが含まれているテーブルの名前です。テーブル名は識別子の規則に従っている必要があります。

  • 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 のすべての情報メッセージを表示しないようにします。

説明

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 は、次のオブジェクトに対して使用できません。

  • システム テーブル

  • 空間インデックス

結果セット

NO_INFOMSGS を指定しない限り (テーブル名の指定は必要)、DBCC DBREINDEX は常に以下を返します。

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

権限

呼び出し元はテーブルを所有しているか、固定サーバー ロール sysadmin、固定データベース ロール db_owner、または固定データベース ロール db_ddladmin のメンバーである必要があります。

A. インデックスを再構築する

次の例では、AdventureWorks2008R2 データベースの Employee テーブルで、Employee_EmployeeID クラスター化インデックスを FILL FACTOR 80 で再構築します。

USE AdventureWorks2008R2; 
GO
DBCC DBREINDEX ("HumanResources.Employee", PK_Employee_BusinessEntityID,80);
GO

B. すべてのインデックスを再構築する

次の例では、AdventureWorks2008R2 の Employee テーブルのすべてのインデックスを、FILL FACTOR 値 70 で再構築します。

USE AdventureWorks2008R2; 
GO
DBCC DBREINDEX ("HumanResources.Employee", " ", 70);
GO