sys.dm_db_missing_index_details (Transact-SQL)
空間インデックスを除く、欠落インデックスに関する詳細情報を返します。
列名 |
データ型 |
説明 |
---|---|---|
index_handle |
int |
特定の欠落インデックスの識別子。識別子はサーバー内で一意です。index_handle はこのテーブルのキーです。 |
database_id |
smallint |
欠落インデックスを含むテーブルがあるデータベースの識別子。 |
object_id |
int |
インデックスが欠落しているテーブルの識別子。 |
equality_columns |
nvarchar(4000) |
次の形式の等値述語に使用できる列のコンマ区切り一覧。 table.column =constant_value |
inequality_columns |
nvarchar(4000) |
次の形式のような不等値述語に使用できる列のコンマ区切り一覧。 table.column > constant_value "=" 以外の比較演算子はすべて、不等値を表します。比較演算子の一覧については、「比較演算子 (データベース エンジン)」を参照してください。 |
included_columns |
nvarchar(4000) |
クエリの包括列として必要な列のコンマ区切り一覧。包括列または付加列の詳細については、「付加列インデックスの作成」を参照してください。 |
statement |
nvarchar(4000) |
インデックスが欠落しているテーブルの名前。 |
説明
sys.dm_db_missing_index_details によって返される情報は、クエリ オプティマイザでクエリが最適化されるときに更新されますが、保存されません。欠落インデックスの情報が保持されるのは、SQL Server の再起動までです。欠落インデックスの情報を、サーバーの再利用後も保持する場合は、データベース管理者が情報のバックアップ コピーを定期的に作成する必要があります。
特定の欠落インデックスが属する欠落インデックス グループを特定するには、sys.dm_db_missing_index_groups 動的管理ビューをクエリできます。これには、index_handle 列を基準に、このビューを sys.dm_db_missing_index_details と等結合します。
欠落インデックスの情報の収集を有効化および無効化する方法については、「欠落したインデックス機能について」を参照してください。
この機能の制限については、「欠落したインデックス機能の制限事項」を参照してください。
CREATE INDEX ステートメントでの欠落インデックス情報の使用
sys.dm_db_missing_index_details で返される情報を CREATE INDEX ステートメントに変換するには、等値列を不等値列の前に指定し、これらを合わせてインデックスのキーにする必要があります。付加列は、INCLUDE 句を使用して CREATE INDEX ステートメントに追加します。等値の列の有効な順序を決定するには、選択度の最も高い列を左の先頭に指定し、選択度が高い順に並べます。sys.dm_db_missing_index_details で返される欠落インデックス情報を使用して CREATE INDEX ステートメントを記述する方法の詳細については、「欠落したインデックス情報を使用した CREATE INDEX ステートメントの記述」を参照してください。
トランザクションの一貫性
トランザクションでテーブルを作成または削除する場合、削除されたオブジェクトに関する欠落インデックス情報を含む行は、トランザクションの一貫性を保持するためこの動的管理オブジェクトから削除されます。欠落インデックスの動的管理オブジェクトに関するトランザクションの一貫性の詳細については、「欠落したインデックス機能について」を参照してください。
権限
この動的管理ビューをクエリするには、VIEW SERVER STATE 権限、または VIEW SERVER STATE が暗黙的に与えられる権限が許可されている必要があります。