STATS_DATE (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Returnerar datumet för den senaste uppdateringen för statistik i en tabell eller indexerad vy.

För mer information om hur man uppdaterar statistik, se Statistik.

Transact-SQL syntaxkonventioner

Syntax

STATS_DATE ( object_id , stats_id )  

Arguments

object_id
ID för tabellen eller indexerad vy med statistiken.

stats_id
ID för statistikobjektet.

Returtyper

Returnerar datum och tid vid framgång. Returnerar NULL om en statistikblob inte skapades.

Anmärkningar

Systemfunktioner kan användas i select-listan, i WHERE-klausulen och var som helst ett uttryck kan användas.

Uppdateringsdatumet för statistik lagras i -statistikblobobjektet tillsammans med histogrammet och densitetsvektor, inte i metadata. När ingen data läses för att generera statistikdata skapas inte statistikblobben och datumet är inte tillgängligt. Detta gäller för filtrerad statistik där predikatet inte returnerar några rader, eller för nya tomma tabeller.

Om statistik motsvarar ett index är värdet stats_id i sys.stats-katalogvyn detsamma som index_id-värdet i sys.indexes-katalogvyn .

Permissions

Kräver medlemskap i den db_owner fasta databasrollen eller behörighet för att visa metadata för tabellen eller den indexerade vyn.

Examples

A. Returnera datumen för de senaste statistiken för en tabell

Följande exempel återger datumet för den senaste uppdateringen för varje statistikobjekt i tabellen 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  

Om statistik motsvarar ett index är värdet stats_id i sys.stats-katalogvyn detsamma som index_id-värdet i sys.indexes-katalogvyn , och följande fråga ger samma resultat som föregående fråga. Om statistik inte motsvarar ett index finns den i sys.stats-resultaten men inte i 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  

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

B. Lär dig när en namngiven statistik senast uppdaterades

Följande exempel skapar statistik i kolumnen Efternamn i tabellen DimCustomer. Den kör sedan en fråga för att visa datumet för statistiken. Sedan ändrar den statistiken och kör frågan igen för att visa det uppdaterade datumet.

--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. Visa datumet för den senaste uppdateringen för all statistik i en tabell

Detta exempel returnerar datumet för när varje statistikobjekt i DimCustomer-tabellen senast uppdaterades.

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

Om statistik motsvarar ett index är värdet stats_id i sys.stats-katalogvyn detsamma som index_id-värdet i sys.indexes-katalogvyn , och följande fråga ger samma resultat som föregående fråga. Om statistik inte motsvarar ett index finns den i sys.stats-resultaten men inte i 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  

Se även

Systemfunktioner (Transact-SQL)
UPPDATERINGSSTATISTIK (Transact-SQL)
sp_autostats (Transact-SQL)
Statistik
sys.dm_db_stats_properties (Transact-SQL)
sys.stats
Statistik i Microsoft Fabric