sys.stats (Transact-SQL)

適用于:yesSQL Server (所有支援的版本 Yes) Azure SQL Database Yes Azure SQL 受控執行個體 yes Azure Synapse Analytics Analytics yes Platform System (PDW)

針對資料庫中資料表、索引和索引檢視表所存在的每個統計資料物件,各包含一個資料列SQL Server。 每個索引都會有名稱與識別碼相同的對應統計資料資料列, (index_id = stats_id) ,但每個統計資料資料列都沒有對應的索引。

目錄檢視 sys.stats_columns 提供資料庫中每個資料行的統計資料資訊。 如需統計資料的詳細資訊,請參閱統計資料

資料行名稱 資料類型 描述
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 2012 (11.x) ) 開始SQL Server (
is_incremental bit 指出是否將統計資料建立成累加統計資料。

0 = 統計資料不是累加的。

1 = 統計資料是累加的。

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

0 = 統計資料不會保存樣本百分比。

1 = 已使用 [PERSIST_SAMPLE_PERCENT] 選項建立或更新統計資料。

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

0 = 排序型統計資料

1 = 僅限內部使用

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

以排序為基礎的統計資料

僅供內部使用

適用于:從 SQL Server 2019 (15.x) ) 開始SQL Server (

權限

目錄檢視內中繼資料的可見性會限制在使用者所擁有的安全性實體,或已授與使用者某些權限的安全性實體。 如需相關資訊,請參閱 Metadata Visibility Configuration

範例

下列範例會傳回 HumanResources.Employee 資料表的所有統計資料及統計資料行。

USE AdventureWorks2012;  
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');  

另請參閱

物件目錄檢視 (Transact-SQL)
目錄檢視 (Transact-SQL)
查詢 SQL Server 系統目錄 FAQ
統計資料
sys.dm_db_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)
sys.stats_columns (Transact-SQL)