Delen via


STATS_DATE (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Geeft de datum van de meest recente update terug voor statistieken op een tabel of geïndexeerde weergave.

Voor meer informatie over het bijwerken van statistieken, zie Statistieken.

Transact-SQL syntaxis-conventies

Syntaxis

STATS_DATE ( object_id , stats_id )  

Arguments

object_id
ID van de tabel of geïndexeerde weergave met de statistieken.

stats_id
Id van het statistiekenobject.

Retourtypen

Retourneert datum-tijd bij succes. Geeft NULL terug als er geen statistiekblob is gemaakt.

Opmerkingen

Systeemfuncties kunnen worden gebruikt in de selectielijst, in de WHERE-clausule en overal waar een expressie kan worden gebruikt.

De updatedatum van statistieken wordt samen met het histogram en de dichtheidsvector opgeslagen in het blobobject voor statistieken, niet in de metagegevens. Wanneer er geen gegevens worden gelezen om statistische gegevens te genereren, wordt de statistiekblob niet aangemaakt en is de datum niet beschikbaar. Dit geldt voor gefilterde statistieken waarbij het predicaat geen rijen teruggeeft, of voor nieuwe lege tabellen.

Als statistieken overeenkomen met een index, is de stats_id waarde in de sys.stats catalogus weergave dezelfde als de index_id waarde in de sys.indexes catalogusweergave.

Permissions

Vereist lidmaatschap van de db_owner vaste databaserol of toestemming om de metadata van de tabel of geïndexeerde weergave te bekijken.

Voorbeelden

Eén. Geef de data van de meest recente statistieken terug voor een tabel

Het volgende voorbeeld geeft de datum van de meest recente update voor elk statistiekobject in de Person.Address tabel terug.

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  

Als statistieken overeenkomen met een index, is de stats_id waarde in de sys.stats catalogus view dezelfde als de index_id waarde in de sys.indexes catalog view, en de volgende query geeft dezelfde resultaten als de voorgaande query. Als statistieken niet overeenkomen met een index, staan ze in de sys.stats-resultaten maar niet in de sys.indexes-resultaten.

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  

Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)

B. Leer wanneer een benoemde statistiek voor het laatst is bijgewerkt

Het volgende voorbeeld maakt statistieken aan in de kolom Achternaam van de DimCustomer-tabel. Vervolgens wordt er een zoekopdracht uitgevoerd om de datum van de statistieken te tonen. Daarna wordt de statistieken aangepast en de query opnieuw uitgevoerd om de bijgewerkte datum te tonen.

--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. Bekijk de datum van de laatste update voor alle statistieken in een tabel

Dit voorbeeld geeft de datum terug waarop elk statistiekobject in de DimCustomer-tabel voor het laatst is bijgewerkt.

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

Als statistieken overeenkomen met een index, is de stats_id waarde in de sys.stats catalogus view dezelfde als de index_id waarde in de sys.indexes catalog view, en de volgende query geeft dezelfde resultaten als de voorgaande query. Als statistieken niet overeenkomen met een index, staan ze in de sys.stats-resultaten maar niet in de sys.indexes-resultaten.

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  

Zie ook

Systeemfuncties (Transact-SQL)
UPDATESTATISTIEKEN (Transact-SQL)
sp_autostats (Transact-SQL)
statistieken
sys.dm_db_stats_properties (Transact-SQL)
sys.stats
Statistiek in Microsoft Fabric