Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza 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