sys.dm_db_index_usage_stats (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

傳回不同類型的索引作業計數,以及上次執行每個作業類型的時間。

在 Azure SQL Database 中,動態管理檢視不可以公開可能會影響資料庫內含項目的資訊,或公開有關使用者可存取之其他資料庫的資訊。 為了避免公開此資訊,系統會篩選出包含不屬於連線租用戶之資料的每個資料列。

注意

DMV sys.dm_db_index_usage_stats 不會傳回記憶體優化索引或空間索引的相關信息。 如需記憶體優化索引使用的相關信息,請參閱 sys.dm_db_xtp_index_stats (Transact-SQL)

注意

若要從 Azure Synapse Analytics 或 Analytics Platform System (PDW) 呼叫此檢視,請使用 sys.dm_pdw_nodes_db_index_usage_stats。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

資料行名稱 資料類型 描述
database_id smallint 定義數據表或檢視表的資料庫標識碼。

在 Azure SQL 資料庫 中,這些值在單一資料庫或彈性集區內是唯一的,但在邏輯伺服器內則不是唯一的。
object_id int 定義索引的數據表或檢視表標識碼
index_id int 索引的識別碼。
user_seeks bigint 用戶查詢的搜尋數目。
user_scans bigint 未使用 'seek' 述詞的使用者查詢掃描數目。
user_lookups bigint 用戶查詢的書籤查閱數目。
user_updates bigint 用戶查詢的更新數目。 這包括 Insert、Delete 和 更新,代表未影響實際數據列的作業數目。 例如,如果您在一個語句中刪除 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)

此散發節點的標識碼。

備註

每個個別的搜尋、掃描、查閱或更新指定的索引,都會由一個查詢執行計算為使用該索引,並在這個檢視中遞增對應的計數器。 針對使用者提交查詢所造成的作業,以及內部產生的查詢所造成的作業,例如收集統計數據的掃描,都會報告資訊。

數據 user_updates 行是基礎表或檢視表上插入、更新或刪除作業所造成的索引維護計數器。 您可以使用此檢視來判斷應用程式只會輕使用哪些索引。 您也可以使用 檢視來判斷哪些索引會產生維護額外負荷。 您可能想要考慮卸除會產生維護額外負荷的索引,但不會用於查詢,或只不常用於查詢。

每當啟動資料庫引擎時,計數器就會初始化為空白。 使用 sys.dm_os_sys_info 中的 sqlserver_start_time 資料行,來尋找最近一次資料庫引擎啟動時間。 此外,每當卸離或關閉資料庫時(例如,因為AUTO_CLOSE設定為 ON),就會移除與資料庫相關聯的所有數據列。

使用索引時,如果索引的數據列尚未存在,則會將資料列加入至 sys.dm_db_index_usage_stats 。 加入數據列時,其計數器一開始會設定為零。

在升級至 SQL Server 2008 R2 (10.50.x)、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 之前的專案(10.50.x)。

權限

在 SQL Server 和 SQL 受控執行個體上,需要 VIEW SERVER STATE 權限。

在 SQL 資料庫 基本、S0 和 S1 服務目標上,以及彈性集區中的資料庫,需要伺服器管理員帳戶、Microsoft Entra 系統管理員帳戶或伺服器角色的成員##MS_ServerStateReader##資格。 在所有其他 SQL Database 服務目標上,需要資料庫的 VIEW DATABASE STATE 權限或 ##MS_ServerStateReader## 伺服器角色的成員資格。

SQL Server 2022 及更新版本的權限

需要伺服器上的 VIEW SERVER PERFORMANCE STATE 權限。

另請參閱

索引相關的動態管理檢視和函式 (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)
效能的監視與微調