sys.stats (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲

針對 SQL Server 資料庫中數據表、索引和索引檢視表,每個統計數據物件各包含一個數據列。 每個索引都會有一個具有相同名稱和標識符的對應統計數據數據列(index_id = stats_id),但並非每個統計數據數據列都有對應的索引。

目錄檢視 sys.stats_columns 提供資料庫中每個數據行的統計數據資訊。

如需統計資料的詳細資訊,請參閱統計資料

注意

如需 Microsoft Fabric 中統計數據的詳細資訊,請參閱 Microsoft Fabric 中的統計數據。

資料行名稱 資料類型 描述
object_id int 這些統計數據所屬對象的標識碼。
name sysname 統計數據的名稱。 在物件中是唯一的。
stats_id int 統計數據的標識碼。 在物件中是唯一的。

如果統計數據對應至索引,則stats_id值與 sys.indexes 目錄檢視中的index_id值相同
auto_created bit 指出 SQL Server 是否自動建立統計數據。

0 = SQL Server 不會自動建立統計數據。

1 = SQL Server 自動建立統計數據。
user_created bit 指出使用者是否建立統計數據。

0 = 使用者未建立統計數據。

1 = 使用者已建立統計數據。
no_recompute bit 指出是否已使用 NORECOMPUTE 選項建立統計數據。

0 = 未使用 NORECOMPUTE 選項建立統計數據。

1 = 使用 NORECOMPUTE 選項建立統計數據。
has_filter bit 0 = 統計數據沒有篩選,而且會在所有數據列上計算。

1 = 統計數據具有篩選,而且只會計算滿足篩選定義的數據列。
filter_definition nvarchar(max) 篩選統計數據中包含的數據列子集表達式。

NULL = 未篩選的統計數據。
is_temporary bit 指出統計數據是否為暫時性。 暫時統計數據支援啟用只讀取的 Always On 可用性群組輔助資料庫。

0 = 統計數據不是暫時的。

1 = 統計數據是暫時的。

適用於:SQL Server (從 SQL Server 2012 (11.x) 開始)
is_incremental bit 指出統計數據是否建立為累加統計數據。

0 = 統計數據不是累加的。

1 = 統計數據是累加的。

適用於:SQL Server (從 SQL Server 2014 (12.x) 開始)
has_persisted_sample bit 指出是否已使用 [PERSIST_SAMPLE_PERCENT] 選項建立或更新統計數據。

0 = 統計數據不會儲存樣本百分比。

1 = 統計數據已使用 PERSIST_SAMPLE_PERCENT 選項建立或更新。

適用於:SQL Server (從 SQL Server 2019 (15.x) 開始)
stats_generation_method int 指出建立統計數據的方法。

0 = 排序型統計數據

1 = 僅限內部使用

適用於:SQL Server (從 SQL Server 2019 (15.x) 開始)
stats_generation_method_desc varchar(255) 建立統計數據之方法的文字描述。

排序型統計數據

僅供內部使用。

適用於:SQL Server (從 SQL Server 2019 (15.x) 開始)
auto_drop bit 指出是否為此統計數據物件啟用自動卸除功能。 AUTO_DROP 屬性允許在模式中建立統計資料物件,讓統計資料物件「不會」封鎖後續的結構描述變更,而是視需要卸除統計資料。 如此一來,啟用 AUTO_DROP 手動建立統計資料的運作方式如同自動建立的統計資料。 如需詳細資訊,請參閱 AUTO_DROP 選項

適用於:Azure SQL 資料庫、Azure SQL 受控執行個體,以及從 SQL Server 2022 (16.x) 開始。

權限

目錄檢視中元數據的可見度僅限於用戶擁有的安全性實體,或用戶獲授與某些許可權的安全性實體。 如需相關資訊,請參閱 Metadata Visibility Configuration

範例

下列範例會傳 HumanResources.Employee 回數據表的所有統計數據和統計數據數據行。

USE AdventureWorks2022;
GO
SELECT s.name AS statistics_name
      ,c.name AS column_name
      ,sc.stats_column_id
FROM sys.stats AS s
INNER JOIN sys.stats_columns AS sc
    ON s.object_id = sc.object_id AND s.stats_id = sc.stats_id
INNER JOIN sys.columns AS c
    ON sc.object_id = c.object_id AND c.column_id = sc.column_id
WHERE s.object_id = OBJECT_ID('HumanResources.Employee');

另請參閱

下一步