STATS_DATE (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric
Gibt das Datum des letzten Updates für die Statistik einer Tabelle oder indizierten Sicht zurück.
Weitere Informationen zum Aktualisieren von Statistiken finden Sie unter Statistik.
Transact-SQL-Syntaxkonventionen
Syntax
STATS_DATE ( object_id , stats_id )
Argumente
object_id
Die ID der Tabelle oder der indizierten Sicht, die die Statistik beinhaltet.
stats_id
Die ID des Statistikobjekts.
Rückgabetypen
Gibt datetime erfolgreich zurück. Gibt NULL zurück, wenn kein statistisches Blob erstellt wurde.
Hinweise
Systemfunktionen können in der Auswahlliste, in der WHERE-Klausel und überall dort verwendet werden, wo ein Ausdruck verwendet werden kann.
Das Aktualisierungsdatum für die Statistiken befindet sich gemeinsam mit dem Histogramm und Dichtevektor nicht in den Metadaten, sondern im Statistik-Blobobjekt. Wenn für das generieren von Statistikdaten keine Daten gelesen werden, wird das Statistikblob nicht erstellt und das Datum nicht verfügbar gemacht. Dies ist der Fall bei gefilterten Statistiken oder neuen und leeren Tabellen, für die das Prädikat keine Zeilen zurückgibt.
Wenn Statistiken einem Index entsprechen, entspricht der stats_id-Wert in der sys.stats-Katalogsicht dem index_id-Wert in der sys.indexes-Katalogsicht.
Berechtigungen
Erfordert die Mitgliedschaft in der festen Datenbankrolle db_owner oder die Berechtigung, Metadaten für die Tabelle oder indizierte Sicht anzuzeigen.
Beispiele
A. Zurückgeben der Datumsangaben der letzten Statistik für eine Tabelle
Im folgenden Beispiel wird das Datum des letzten Updates für jedes Statistikobjekt in der Person.Address
-Tabelle zurückgegeben.
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
Wenn Statistiken einem Index entsprechen, ist der stats_id-Wert in der sys.stats-Katalogsicht der gleiche wie der index_id-Wert in der sys.indexes-Katalogsicht. Die folgende Abfrage gibt die gleichen Ergebnisse zurück wie die vorherige Abfrage. Wenn Statistiken keinem Index entsprechen, kommen sie in den sys.stats-Ergebnissen, nicht jedoch in den sys.indexes-Ergebnissen vor.
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
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
B. Abrufen des Datums des letzten Updates für eine benannte Statistik
Im folgenden Beispiel werden Statistiken für die LastName-Spalte der DimCustomer-Tabelle erstellt. Anschließend wird eine Abfrage ausgeführt, um das Datum der Statistiken anzuzeigen. Danach wird die Statistik aktualisiert und die Abfrage erneut ausgeführt, um das aktualisierte Datum anzuzeigen.
--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. Anzeigen des Datums des letzten Updates für alle Statistiken einer Tabelle
In diesem Beispiel wird das Datum des letzten Updates für jedes Statistikobjekt in der DimCustomer-Tabelle zurückgegeben.
--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
Wenn Statistiken einem Index entsprechen, ist der stats_id-Wert in der sys.stats-Katalogsicht der gleiche wie der index_id-Wert in der sys.indexes-Katalogsicht. Die folgende Abfrage gibt die gleichen Ergebnisse zurück wie die vorherige Abfrage. Wenn Statistiken keinem Index entsprechen, kommen sie in den sys.stats-Ergebnissen, nicht jedoch in den sys.indexes-Ergebnissen vor.
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
Weitere Informationen
Systemfunktionen (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
sp_autostats (Transact-SQL)
Statistik
sys.dm_db_stats_properties (Transact-SQL)
sys.stats
Statistiken in Microsoft Fabric