次の方法で共有


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 の再起動までです。 欠落インデックスの情報を、サーバーの再利用後も保持する場合は、データベース管理者が情報のバックアップ コピーを定期的に作成する必要があります。

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

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

権限

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

使用例

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

USE AdventureWorks2012;
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

関連項目

参照

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

sys.dm_db_missing_index_group_stats (Transact-SQL)