sys.dm_db_missing_index_columns (Transact-SQL)

適用対象:データベース Azure SQL Managed Instance Azure SQL SQL Server (サポートされているすべてのバージョン)

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

構文

sys.dm_db_missing_index_columns(index_handle)  

引数

index_handle
欠落インデックスを一意に識別する整数値です。 次の動的管理オブジェクトから取得できます。

sys.dm_db_missing_index_details (Transact-SQL)

sys.dm_db_missing_index_groups (Transact-SQL)

返されるテーブル

列名 データ型 説明
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 情報は、クエリ オプティマイザーによってクエリが最適化され、永続化されていない場合に更新されます。 不足しているインデックス情報は、データベース エンジンが再起動されるまでのみ保持されます。 欠落インデックスの情報を、サーバーの再利用後も保持する場合は、データベース管理者が情報のバックアップ コピーを定期的に作成する必要があります。 データベース エンジンが最後に起動された時刻を調べるには、sys.dm_os_sys_infosqlserver_start_time を使用します。

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

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

アクセス許可

この動的管理関数をクエリするには、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  

インデックス候補が見つからない場合は、可能な場合は互いに組み合わせ、現在のデータベース内の既存のインデックスと組み合わせる必要があります。 インデックス候補 が見つからない非クラスター化インデックスを調整して、これらの候補を適用する方法について説明します。

次の手順

不足しているインデックス機能の詳細については、次の記事を参照してください。