STATS_DATE (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

Restituisce la data dell'aggiornamento più recente delle statistiche per una tabella o vista indicizzata.

Per altre informazioni sull'aggiornamento delle statistiche, vedere Statistiche.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

STATS_DATE ( object_id , stats_id )  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.

Argomenti

object_id
ID della tabella o della vista indicizzata contenente le statistiche.

stats_id
ID dell'oggetto statistiche.

Tipi restituiti

Restituisce datetime in caso di esito positivo. Restituisce NULL se un BLOB di statistiche non è stato creato.

Osservazioni

È possibile utilizzare funzioni di sistema nell'elenco di selezione, nella clausola WHERE e in tutti i casi in cui è consentita un'espressione.

La data di aggiornamento delle statistiche viene archiviata nell'oggetto BLOB di statistiche insieme all'istogramma e al vettore di densità, non nei metadati. Quando non viene letto alcun dato per generare i dati delle statistiche, il BLOB di statistiche non viene creato e la data non è disponibile. È il caso delle statistiche filtrate per le quali il predicato non restituisce alcuna riga o delle nuove tabelle vuote.

Se le statistiche corrispondono a un indice, il valore stats_id nella vista del catalogo sys.stats corrisponde al valore index_id nella vista del catalogo sys.indexes.

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del database db_owner o l'autorizzazione per la visualizzazione dei metadati per la tabella o la vista indicizzata.

Esempi

R. Recupero delle date delle statistiche più recenti per una tabella

L'esempio seguente restituisce la data dell'aggiornamento più recente di ogni oggetto statistiche nella tabella Person.Address.

USE AdventureWorks2012;  
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  

Se le statistiche corrispondono a un indice, il valore stats_id nella vista del catalogo sys.stats corrisponde al valore index_id nella vista del catalogo sys.indexes e la query seguente restituisce gli stessi risultati della query precedente. Se le statistiche non corrispondono a un indice, vengono restituite nei risultati di sys.stats ma non in quelli di sys.indexes.

USE AdventureWorks2012;  
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  

Esempi: Azure Synapse Analytics e Parallel Data Warehouse

B. Informazioni sull'ultimo aggiornamento di determinate statistiche

L'esempio seguente crea statistiche sulla colonna LastName della tabella DimCustomer. Viene quindi eseguita una query per visualizzare la data delle statistiche. Le statistiche vengono quindi aggiornate e viene di nuovo eseguita la query per visualizzare la data di aggiornamento.

--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. Visualizzare la data dell'ultimo aggiornamento di tutte le statistiche in una tabella

Questo esempio restituisce la data dell'ultimo aggiornamento di ogni oggetto statistica nella tabella DimCustomer.

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

Se le statistiche corrispondono a un indice, il valore stats_id nella vista del catalogo sys.stats corrisponde al valore index_id nella vista del catalogo sys.indexes e la query seguente restituisce gli stessi risultati della query precedente. Se le statistiche non corrispondono a un indice, vengono restituite nei risultati di sys.stats ma non in quelli di 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  

Vedere anche

Funzioni di sistema (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
sp_autostats (Transact-SQL)
Statistiche
sys.dm_db_stats_properties (Transact-SQL)
sys.stats