Udostępnij za pomocą


STATS_DATE (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Zwraca datę najnowszej aktualizacji statystyk w tabeli lub widoku indeksowanym.

Więcej informacji o aktualizacji statystyk można znaleźć w sekcji Statystyka.

Transact-SQL konwencje składni

Składnia

STATS_DATE ( object_id , stats_id )  

Arguments

object_id
Identyfikacja tabeli lub widoku indeksowanego ze statystykami.

stats_id
Identyfikator obiektu statystyk.

Typy zwracane

Zwraca datę po sukcesie. Zwraca NULL , jeśli nie utworzono tabliczki statystyki.

Uwagi

Funkcje systemowe mogą być używane w liście select, w klauzuli WHERE oraz wszędzie tam, gdzie można użyć wyrażenia.

Data aktualizacji statystyk jest przechowywana w obiekcie blob statystyk wraz z histogramem i wektorem gęstości, a nie w metadanych. Gdy nie odczyta się danych w celu wygenerowania danych statystycznych, blob statystyk nie jest tworzony, a data nie jest dostępna. Dotyczy to statystyk filtrowanych, dla których predykat nie zwraca żadnych wierszy, lub nowych pustych tabel.

Jeśli statystyki odpowiadają indeksowi, wartość stats_id w widoku katalogu sys.stats jest taka sama jak wartość index_id w widoku sys.indexes .

Permissions

Wymaga członkostwa w db_owner stałej roli bazy danych lub uprawnień do przeglądania metadanych tabeli lub widoku indeksowego.

Przykłady

A. Zwróć daty najnowszych statystyk dla tabeli

Poniższy przykład zwraca datę najnowszej aktualizacji każdego obiektu statystyki w tabeli 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  

Jeśli statystyki odpowiadają indeksowi, wartość stats_id w widoku katalogu sys.stats jest taka sama jak wartość index_id w widoku sys.indexes , a następujące zapytanie zwraca te same wyniki co poprzednie zapytanie. Jeśli statystyki nie odpowiadają indeksowi, pojawiają się w wynikach sys.stats, ale nie w wynikach 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  

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

B. Dowiedz się, kiedy nazwana statystyka została ostatnio zaktualizowana

Poniższy przykład tworzy statystyki w kolumnie Nazwisko w tabeli DimCustomer. Następnie wykonuje zapytanie, aby pokazać datę statystyk. Następnie aktualizuje statystyki i uruchamia zapytanie ponownie, aby pokazać datę aktualizacji.

--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. Zobacz datę ostatniej aktualizacji dla wszystkich statystyk w tabeli

Ten przykład zwraca datę, kiedy każdy obiekt statystyki w tabeli DimCustomer był ostatnio aktualizowany.

--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  

Jeśli statystyki odpowiadają indeksowi, wartość stats_id w widoku katalogu sys.stats jest taka sama jak wartość index_id w widoku sys.indexes , a następujące zapytanie zwraca te same wyniki co poprzednie zapytanie. Jeśli statystyki nie odpowiadają indeksowi, pojawiają się w wynikach sys.stats, ale nie w wynikach 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  

Zobacz też

Funkcje systemowe (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
sp_autostats (Transact-SQL)
Statystyki
sys.dm_db_stats_properties (Transact-SQL)
sys.stats
Statystyki w Microsoft Fabric