Articles

sys.dm_db_missing_index_details (Transact-SQL)

Posted by admin
  • 03/20/2017
  • 2 minutes to read
    • W
    • r
    • c
    • M
    • s
    • +5

Applies to: SQL Server (all supported versions) Azure SQL Database

Returns detailed information about missing indexes, excluding spatial indexes.

Azure SQL Databaseでは、動的管理ビューは、データベースの封じ込めに影響を与える情報や、ユーザーがアクセスできる他のデータベースに関する情報を公開できません。 この情報が公開されないようにするには、接続されているテナントに属していないデータを含むすべての行が除外されます。

列名 データ型 説明
index_handle int は、特定の欠落しているインデックスを識別します。 この識別子は、サーバー全体で一意です。 index_handleは、このテーブルのキーです。
database_id smallint は、インデックスが欠落しているテーブルが存在するデータベースを識別します。
object_id int は、インデックスが欠落しているテーブルを識別します。
equality_columns nvarchar(4000) tableの形式の等値述語に寄与する列のコンマ区切りリスト。列=constant_value
inequality_columns nvarchar(4000) 不等式述部に寄与する列のコンマ区切りリスト(たとえば、
tableの形式の述部)。column>constant_value
“=”以外の比較演算子は不等式を表します。
included_columns nvarchar(4000) クエリの列をカバーするために必要な列のコンマ区切りリスト。 カバー列または包含列の詳細については、”包含列を含むインデックスの作成”を参照してください。
メモリ最適化インデックス(ハッシュとメモリ最適化非クラスタ化の両方)の場合は、included_columnsを無視します。 テーブルのすべての列は、すべてのメモリ最適化インデックスに含まれます。
ステートメント nvarchar(4000) インデックスが欠落しているテーブルの名前。

備考

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

特定の欠落しているインデックスがどの欠落しているインデックスグループに含まれているかを判断するには、index_handle列に基づいてsys.dm_db_missing_index_details注このDMVの結果セットは600行に制限されています。 各行には欠落しているインデックスが1つ含まれています。 欠落しているインデックスが600を超える場合は、新しいインデックスを表示できるように、既存の欠落しているインデックスに対処する必要があ

CREATE INDEXステートメントで欠落しているインデックス情報を使用する

sys.dm_db_missing_index_detailsによって返された情報を、メモリ最適化インデックスとディスクベースのインデックの両方のCREATE INDEXステートメントに変換するには、等号列を等号列の前に置き、一緒にインデックスのキーを作成する必要があります。 インクルードされた列は、INCLUDE句を使用してCREATE INDEXステートメントに追加する必要があります。 等価列の有効な順序を決定するには、選択性に基づいて順序を決定します。最も選択的な列を最初にリストします(列リストの左端)。

メモリ最適化インデックスの詳細については、”メモリ最適化テーブルのインデックス”を参照してください。

トランザクションの整合性

トランザクションがテーブルを作成または削除すると、削除されたオブジェクトに関する欠落しているインデックス情報

権限

SQL Serverでは、VIEW SERVER STATE権限が必要です。SQL Database Basic、S0、およびS1のサービス目標では
、elastic poolのデータベースではServer adminまたはAzure Active Directory adminアカウントが必要です。 他のすべてのSQLデータベースサービスの目的では、データベースにVIEW DATABASE STATE権限が必要です。

も参照

Related Post