sys.dm_db_index_usage_stats (Transact-SQL)

適用対象:yesSQL Server (サポートされているすべてのバージョン) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

さまざまな種類のインデックス操作の数と、各種の操作が前回実行された時刻を返します。

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

Note

DMV sys.dm_db_index_usage_stats は、メモリ最適化インデックスまたは空間インデックスに関する情報を返しません。 メモリ最適化インデックスの使用については、「sys.dm_db_xtp_index_stats (Transact-SQL)」を参照してください。

Note

Azure Synapse Analytics または Analytics Platform System (PDW) からこのビューを呼び出すには、次を使用しますsys.dm_pdw_nodes_db_index_usage_stats。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。

列名 データ型 説明
database_id smallint テーブルまたはビューが定義されているデータベースの ID。
object_id int インデックスが定義されているテーブルまたはビューの ID。
index_id int インデックスの ID。
user_seeks bigint ユーザー クエリによるシーク数。
user_scans bigint 'seek' 述語を使用しなかったユーザー クエリによるスキャンの数。
user_lookups bigint ユーザー クエリによるブックマーク参照数。
user_updates bigint ユーザー クエリによる更新数。 これには、影響を受ける実際の行ではなく、実行された操作の数を表す挿入、削除、更新が含まれます。 たとえば、1 つのステートメントで 1000 行を削除すると、この数は 1 ずつ増加します。
last_user_seek datetime 前回のユーザー シークの時刻。
last_user_scan datetime 前回のユーザー スキャンの時刻。
last_user_lookup datetime 前回のユーザー参照の時刻。
last_user_update datetime 前回のユーザー更新の時刻。
system_seeks bigint システム クエリによるシーク数。
system_scans bigint システム クエリによるスキャン数。
system_lookups bigint システム クエリによる参照数。
system_updates bigint システム クエリによる更新数。
last_system_seek datetime 前回のシステム シークの時刻。
last_system_scan datetime 前回のシステム スキャンの時刻。
last_system_lookup datetime 前回のシステム参照の時刻。
last_system_update datetime 前回のシステム更新の時刻。
pdw_node_id int 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW)

このディストリビューションがオンになっているノードの識別子。

注釈

指定したインデックスに対し、1 回のクエリ実行でシーク、スキャン、参照、または更新が行われるたび、その操作はインデックスの使用としてカウントされ、このビュー内の対応するカウンターが 1 増えます。 情報は、ユーザーが送信したクエリによる操作と、統計収集のスキャンなど内部生成されたクエリによる操作の両方についてレポートされます。

この user_updates 列は、基になるテーブルまたはビューに対する挿入、更新、または削除操作によって発生するインデックスのメンテナンスカウンターです。 このビューを使用して、アプリケーションであまり使用されないインデックスを特定できます。 また、メンテナンスのオーバーヘッドの原因になっているインデックスも特定できます。 メンテナンスのオーバーヘッドの原因になっており、クエリでほとんどまたはまったく使用されないインデックスが特定できれば、インデックスの削除を検討することもできます。

カウンターは、データベース エンジンが開始されるたびに空に初期化されます。 データベース エンジンが最後に起動された時刻を調べるには、sys.dm_os_sys_infosqlserver_start_time を使用します。 また、AUTO_CLOSE が ON に設定されているなどの理由によりデータベースがデタッチまたはシャットダウンされるときに、そのデータベースに関連付けられたすべての行が削除されます。

インデックスを使用すると、インデックスの行がまだ存在しない場合に行が追加 sys.dm_db_index_usage_stats されます。 行が追加されるときに、カウンターが 0 に初期設定されます。

SQL Server 2008 R2、SQL Server 2012 (11.x)、または SQL Server 2014 (12.x) へのアップグレード中に、エントリsys.dm_db_index_usage_statsが削除されます。 SQL Server 2016 (13.x) 以降、エントリは 2008 R2 SQL Server以前と同様に保持されます。

アクセス許可

SQL Server と SQL Managed Instance では、VIEW SERVER STATE アクセス許可が必要です。

SQL Database BasicS0、および S1 のサービス目標、およびエラスティック プール内のデータベースの場合、サーバー管理者アカウント、Azure Active Directory 管理者アカウント、または ##MS_ServerStateReader##サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE アクセス許可または ##MS_ServerStateReader## サーバー ロールのメンバーシップのいずれかが必要です。

参照

インデックス関連の動的管理ビューと関数 (Transact-SQL)
sys.dm_db_index_physical_stats (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)
sys.indexes (Transact-SQL)
sys.objects (Transact-SQL)
sys.dm_os_sys_info (Transact-SQL)
パフォーマンスの監視とチューニング