次の方法で共有


sys.dm_db_missing_index_columns (Transact-SQL)

空間インデックス以外のインデックスが欠落しているデータベース テーブル列に関する情報を返します。sys.dm_db_missing_index_columns は動的管理関数です。

構文

sys.dm_db_missing_index_columns(index_handle)

引数

返されるテーブル

列名

データ型

説明

column_id

int

列の ID。

column_name

sysname

テーブル列の名前。

column_usage

varchar(20)

クエリでの列の使用方法。次の値をとります。

値説明
EQUALITY列は等値を表す述語に使用できます。形式は次のとおりです。 table.column =constant_value
INEQUALITY列は不等値を表す述語に使用できます。形式は次のようになります。 table.column > constant_value "=" 以外の比較演算子はすべて、不等値を表します。比較演算子の一覧については、「比較演算子 (データベース エンジン)」を参照してください。
INCLUDE列は述語の評価に使用されませんが、たとえばクエリへの対応など、他の目的で使用されます。

説明

sys.dm_db_missing_index_columns によって返される情報は、クエリ オプティマイザでクエリが最適化されるときに更新されますが、保存されません。欠落インデックスの情報が保持されるのは、SQL Server の再起動までです。欠落インデックスの情報を、サーバーの再利用後も保持する場合は、データベース管理者が情報のバックアップ コピーを定期的に作成する必要があります。

欠落インデックスの情報の収集を有効化および無効化する方法については、「欠落したインデックス機能について」を参照してください。

index_handle に対応する欠落インデックス情報を読み取り、この情報を処理し、欠落インデックスを実装する CREATE INDEX DDL ステートメント用に変換できるツールであれば、sys.dm_db_missing_index_columns 動的管理関数の出力を使用できます。DDL ステートメントの作成の詳細については、「欠落したインデックス情報を使用した CREATE INDEX ステートメントの記述」を参照してください。

この機能の制限の詳細については、「欠落したインデックス機能の制限事項」を参照してください。

トランザクションの一貫性

トランザクションでテーブルを作成または削除する場合、削除されたオブジェクトに関する欠落インデックス情報を含む行は、トランザクションの一貫性を保持するためこの動的管理オブジェクトから削除されます。欠落インデックスの動的管理オブジェクトに関するトランザクションの一貫性の詳細については、「欠落したインデックス機能について」を参照してください。

権限

この動的管理関数をクエリするには、VIEW SERVER STATE 権限、または VIEW SERVER STATE が暗黙的に与えられる権限が許可されている必要があります。

次の例では、Address テーブルに対してクエリを実行した後、sys.dm_db_missing_index_columns 動的管理ビューを使用してクエリを実行し、インデックスが欠落しているテーブル列を返します。

USE AdventureWorks;
GO
SELECT City, StateProvinceID, PostalCode
FROM Person.Address
WHERE StateProvinceID = 9;
GO
SELECT mig.*, statement AS table_name,
    column_id, column_name, column_usage
FROM sys.dm_db_missing_index_details AS mid
CROSS APPLY sys.dm_db_missing_index_columns (mid.index_handle)
INNER JOIN sys.dm_db_missing_index_groups AS mig ON mig.index_handle = mid.index_handle
ORDER BY mig.index_group_handle, mig.index_handle, column_id;
GO