DBCC DBREINDEX (Transact-SQL)DBCC DBREINDEX (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) 適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions)

指定されたデータベース内のテーブルの 1 つ以上のインデックスを再構築します。Rebuilds one or more indexes for a table in the specified database.

重要

この機能は、Microsoft SQL Server の将来のバージョンで削除されます。This feature will be removed in a future version of Microsoft SQL Server. 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。Avoid using this feature in new development work, and plan to modify applications that currently use this feature. 代わりに ALTER INDEX を使用してください。Use ALTER INDEX instead.

適用対象: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 から現在のバージョンまで)Applies to: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 through current version)

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

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

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

table_nametable_name
再構築するよう指定したインデックスが含まれているテーブルの名前です。Is the name of the table containing the specified index or indexes to rebuild. テーブル名は識別子の規則に従っている必要があります。Table names must follow the rules for identifiers.

index_nameindex_name
再構築するインデックスの名前です。Is the name of the index to rebuild. インデックス名は、識別子の規則に従っている必要があります。Index names must comply with the rules for identifiers. index_name が指定されている場合、table_name を指定する必要があります。If index_name is specified, table_name must be specified. index_name を指定しない場合、または " " である場合は、テーブルのすべてのインデックスが再構築されます。If index_name is not specified or is " ", all indexes for the table are rebuilt.

fillfactorfillfactor
インデックスの作成時または再構築時に、データを格納する各インデックス ページの領域の割合を指定します。Is the percentage of space on each index page for storing data when the index is created or rebuilt. fillfactor はインデックス作成時の FILL FACTOR を上書きし、そのインデックス、およびクラスター化インデックスが再構築されたために再構築される他の非クラスター化インデックスに対する新しい既定値となります。fillfactor replaces the fill factor when the index was created, becoming the new default for the index and for any other nonclustered indexes rebuilt because a clustered index is rebuilt.
fillfactor が 0 の場合、DBCC DBREINDEX はインデックスに対して最後に指定された FILL FACTOR 値を使用します。When fillfactor is 0, DBCC DBREINDEX uses the fill factor value last specified for the index. この値は、sys.indexes カタログ ビューに格納されます。This value is stored in the sys.indexes catalog view.
fillfactor が指定されている場合、table_nameindex_name を指定する必要があります。If fillfactor is specified, table_name and index_name must be specified. fillfactor が指定されていない場合は、既定の FILL FACTOR 値 100 が使用されます。If fillfactor is not specified, the default fill factor, 100, is used. 詳細については、「 インデックスの FILL FACTOR の指定」を参照してください。For more information, see Specify Fill Factor for an Index.

WITH NO_INFOMSGSWITH NO_INFOMSGS
重大度レベル 0 から 10 のすべての情報メッセージを表示しないようにします。Suppresses all informational messages that have severity levels from 0 through 10.

解説Remarks

DBCC DBREINDEX では、テーブルの 1 つのインデックス、またはテーブルに対して定義されているすべてのインデックスを再構築します。DBCC DBREINDEX rebuilds an index for a table or all indexes defined for a table. インデックスを動的に再構築できれば、PRIMARY KEY 制約または UNIQUE 制約を削除して再作成しなくても、それらの制約を強制しているインデックスを再構築できます。By allowing an index to be rebuilt dynamically, indexes enforcing either PRIMARY KEY or UNIQUE constraints can be rebuilt without having to drop and re-create those constraints. したがって、テーブルの構造やその制約がわからない場合でも、インデックスを再構築することができます。This means that an index can be rebuilt without knowing the structure of a table or its constraints. インデックスの再構築は、テーブルにデータを一括コピーした後に実行できます。This might occur after a bulk copy of data into the table.

DBCC DBREINDEX では、1 つのステートメントでテーブルのすべてのインデックスを再構築できます。DBCC DBREINDEX can rebuild all the indexes for a table in one statement. これは複数の DROP INDEX ステートメントと CREATE INDEX ステートメントをコーディングするより簡単です。This is easier than coding multiple DROP INDEX and CREATE INDEX statements. DBCC DBREINDEX は、1 つのステートメントで作業を行うため最初からアトミックです。これに対して、個々の DROP INDEX ステートメントと CREATE INDEX ステートメントをアトミックにするためには、トランザクションに含める必要があります。Because the work is performed by one statement, DBCC DBREINDEX is automatically atomic, whereas individual DROP INDEX and CREATE INDEX statements must be included in a transaction to be atomic. また、DBCC DBREINDEX を使用した方が、個々の DROP INDEX ステートメントと CREATE INDEX ステートメントを使用するよりもさらに最適化されます。Also, DBCC DBREINDEX offers more optimizations than individual DROP INDEX and CREATE INDEX statements.

DBCC INDEXDEFRAG や、REORGANIZE オプションを使用した ALTER INDEX とは異なり、DBCC DBREINDEX はオフライン操作です。Unlike DBCC INDEXDEFRAG, or ALTER INDEX with the REORGANIZE option, DBCC DBREINDEX is an offline operation. 非クラスター化インデックスを再構築する場合、操作中は、該当のテーブルに対して共有ロックが保持されます。If a nonclustered index is being rebuilt, a shared lock is held on the table in question for the duration of the operation. これにより、テーブルが変更されなくなります。This prevents modifications to the table. クラスター化インデックスを再構築する場合は、排他テーブル ロックが保持されます。If the clustered index is being rebuilt, an exclusive table lock is held. これにより、テーブルに一切アクセスできなくなり、実質的にテーブルはオフラインになります。This prevents any table access, therefore effectively making the table offline. インデックスの再構築をオンラインで実行したり、インデックスの再構築操作中に並列処理の次数を制御したりするには、ALTER INDEX REBUILD ステートメントに ONLINE オプションを付けて使用してください。To perform an index rebuild online, or to control the degree of parallelism during the index rebuild operation, use the ALTER INDEX REBUILD statement with the ONLINE option.

インデックスを再構築または再構成する方法の選択の詳細については、「インデックスの再構成と再構築」を参照してください。For more information about selecting a method to rebuild or reorganize an index, see Reorganize and Rebuild Indexes .

制限Restrictions

DBCC DBREINDEX は、次のオブジェクトに対して使用できません。DBCC DBREINDEX is not supported for use on the following objects:

  • システム テーブルSystem tables
  • 空間インデックスSpatial indexes
  • xVelocity メモリ最適化列ストア インデックスxVelocity memory optimized columnstore indexes

結果セットResult Sets

NO_INFOMSGS を指定しない限り (テーブル名の指定は必要)、DBCC DBREINDEX は常に以下を返します。Unless NO_INFOMSGS is specified (the table name must be specified), DBCC DBREINDEX always returns:

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

アクセス許可Permissions

呼び出し元はテーブルまたはインデックス付きビューを所有しているか、固定サーバー ロール sysadmin、固定データベース ロール db_owner、または固定データベース ロール db_ddladmin のメンバーである必要があります。Caller must own the table, or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role.

Examples

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

次の例では、AdventureWorks データベースの Employee テーブルで、Employee_EmployeeID クラスター化インデックスを FILL FACTOR 80 で再構築します。The following example rebuilds the Employee_EmployeeID clustered index with a fill factor of 80 on the Employee table in the AdventureWorks database.

USE AdventureWorks2012;   
GO  
DBCC DBREINDEX ('HumanResources.Employee', PK_Employee_BusinessEntityID,80);  
GO  

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

次の例では、EmployeeAdventureWorks テーブルのすべてのインデックスを、FILL FACTOR 値 70 で再構築します。The following example rebuilds all indexes on the Employee table in AdventureWorks by using a fill factor value of 70.

USE AdventureWorks2012;   
GO  
DBCC DBREINDEX ('HumanResources.Employee', ' ', 70);  
GO  

参照See Also

ALTER TABLE (Transact-SQL)ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL)
DBCC (Transact-SQL)DBCC (Transact-SQL)
sys.indexes (Transact-SQL)sys.indexes (Transact-SQL)
sys.dm_db_index_physical_stats (Transact-SQL)sys.dm_db_index_physical_stats (Transact-SQL)
ALTER INDEX (Transact-SQL)ALTER INDEX (Transact-SQL)