STATS_DATE (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲
針對資料表或索引檢視表的統計資料傳回最近更新的日期。
如需有關更新統計資料的詳細資訊,請參閱 統計資料。
語法
STATS_DATE ( object_id , stats_id )
引數
object_id
包含統計資料之資料表或索引檢視表的識別碼。
stats_id
統計資料物件的識別碼。
傳回型別
成功時傳回 datetime。 若未建立統計資料 Blob,則傳回NULL。
備註
系統函數可以用於選取清單、WHERE 子句以及任何可以使用運算式的位置。
統計資料更新日期儲存在統計資料 Blob 物件中,其中還有長條圖和密度向量,不是儲存在中繼資料中。 如果沒有讀取資料以產生統計資料,則不會建立統計 Blob,而且日期也不可使用。 這是已篩選統計資料的情況,其中述詞未傳回任何資料列,或為新的空白資料表的情況。
如果統計資料對應到索引,sys.stats 目錄檢視中的 stats_id 值會與 sys.indexes 目錄檢視中的 index_id 值相同。
權限
需要 db_owner 固定資料庫角色中的成員資格或權限,才能檢視資料表或索引檢視表的中繼資料。
範例
A. 針對資料表傳回最近更新統計資料的日期
下列範例會針對 Person.Address
資料表的每個統計資料物件傳回最近更新的日期。
USE AdventureWorks2022;
GO
SELECT name AS stats_name,
STATS_DATE(object_id, stats_id) AS statistics_update_date
FROM sys.stats
WHERE object_id = OBJECT_ID('Person.Address');
GO
如果統計資料對應到索引,sys.stats 目錄檢視中的 stats_id 值會與 sys.indexes 目錄檢視中的 index_id 值相同,而且下列查詢會傳回與之前查詢相同的結果。 如果統計資料未對應到索引,統計資料會在 sys.stats 結果中而不是 sys.indexes 結果中。
USE AdventureWorks2022;
GO
SELECT name AS index_name,
STATS_DATE(object_id, index_id) AS statistics_update_date
FROM sys.indexes
WHERE object_id = OBJECT_ID('Person.Address');
GO
範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
B. 了解具名統計資料上次更新時間
下列範例會建立 DimCustomer 資料表的 LastName 資料行的統計資料。 然後,它會執行查詢,以顯示統計資料的日期。 接著它會更新統計資料,並再次執行查詢,以顯示更新的日期。
--First, create a statistics object
USE AdventureWorksPDW2012;
GO
CREATE STATISTICS Customer_LastName_Stats
ON AdventureWorksPDW2012.dbo.DimCustomer (LastName)
WITH SAMPLE 50 PERCENT;
GO
--Return the date when Customer_LastName_Stats was last updated
USE AdventureWorksPDW2012;
GO
SELECT stats_id, name AS stats_name,
STATS_DATE(object_id, stats_id) AS statistics_date
FROM sys.stats s
WHERE s.object_id = OBJECT_ID('dbo.DimCustomer')
AND s.name = 'Customer_LastName_Stats';
GO
--Update Customer_LastName_Stats so it will have a different timestamp in the next query
GO
UPDATE STATISTICS dbo.dimCustomer (Customer_LastName_Stats);
--Return the date when Customer_LastName_Stats was last updated.
SELECT stats_id, name AS stats_name,
STATS_DATE(object_id, stats_id) AS statistics_date
FROM sys.stats s
WHERE s.object_id = OBJECT_ID('dbo.DimCustomer')
AND s.name = 'Customer_LastName_Stats';
GO
C. 檢視資料表上所有統計資料的上次更新日期
這個範例會傳回 DimCustomer 資料表上每個統計資料物件上次更新的日期。
--Return the dates all statistics on the table were last updated.
SELECT stats_id, name AS stats_name,
STATS_DATE(object_id, stats_id) AS statistics_date
FROM sys.stats s
WHERE s.object_id = OBJECT_ID('dbo.DimCustomer');
GO
如果統計資料對應到索引,sys.stats 目錄檢視中的 stats_id 值會與 sys.indexes 目錄檢視中的 index_id 值相同,而且下列查詢會傳回與之前查詢相同的結果。 如果統計資料未對應到索引,統計資料會在 sys.stats 結果中而不是 sys.indexes 結果中。
USE AdventureWorksPDW2012;
GO
SELECT name AS index_name,
STATS_DATE(object_id, index_id) AS statistics_update_date
FROM sys.indexes
WHERE object_id = OBJECT_ID('dbo.DimCustomer');
GO
另請參閱
系統函數 (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
sp_autostats (Transact-SQL)
統計資料
sys.dm_db_stats_properties (Transact-SQL)
sys.stats
Microsoft Fabric 中的統計數據