sys.dm_db_index_usage_stats (Transact-sql SQL)

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

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

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

注意

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

注意

またはからこのビューを呼び出すに 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) は、エントリは以前と同じように保持され SQL Server 2008 R2 ます。

アクセス許可

SQL Serverおよび SQL Managed Instance では、 VIEW SERVER STATE 権限が必要です。

SQL Database BasicS0S1 のサービス目標、および エラスティックプール 内のデータベースについては、サーバー管理者アカウント、 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 SQL)
パフォーマンスの監視とチューニング