Compartilhar via


STATS_DATE (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric

Retorna a data da mais recente atualização de estatísticas em uma tabela ou exibição indexada.

Para obter mais informações sobre como atualizar estatísticas, consulte Estatísticas.

Convenções de sintaxe de Transact-SQL

Sintaxe

STATS_DATE ( object_id , stats_id )  

Argumentos

object_id
ID da tabela ou exibição indexada com as estatísticas.

stats_id
ID do objeto de estatísticas.

Tipos de retorno

Retorna datetime em caso de êxito. Retorna NULL se um blob de estatísticas não foi criado.

Comentários

As funções do sistema podem ser usadas na lista de seleção, na cláusula WHERE e em qualquer local onde uma expressão puder ser usada.

A data de atualização de estatísticas é armazenada no objeto de blob de estatísticas, junto com o histograma e o vetor de densidade, não nos metadados. Quando nenhum dado é lido para gerar dados de estatísticas, o blob de estatísticas não é criado e a data não fica disponível. Esse é o caso para estatísticas filtradas para as quais o predicado não retorna nenhuma linha ou para novas tabelas vazias.

Se as estatísticas corresponderem a um índice, o valor de stats_id na exibição do catálogo sys.stats será o mesmo que o valor de index_id na exibição do catálogo sys.indexes.

Permissões

Requer associação à função de banco de dados fixa db_owner ou permissão para exibir os metadados da tabela ou da exibição indexada.

Exemplos

a. Retornar as datas das estatísticas mais recentes de uma tabela

O exemplo a seguir retorna a data da mais recente atualização de cada objeto de estatísticas na tabela 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  

Se as estatísticas corresponderem a um índice, o valor de stats_id na exibição do catálogo sys.stats será igual ao valor de index_id da exibição do catálogo sys.indexes e a consulta a seguir retornará o mesmo resultado da consulta anterior. Se as estatísticas não corresponderem a um índice, elas estarão nos resultados de sys.stats mas não nos resultados de 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  

Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)

B. Saber a data da última atualização de uma estatística nomeada

O exemplo a seguir cria estatísticas na coluna LastName da tabela DimCustomer. Em seguida, ele executa uma consulta para mostrar a data das estatísticas. Depois, ele atualiza as estatísticas e executa a consulta novamente para mostrar os dados atualizados.

--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. Exibir a data da última atualização de todas as estatísticas em uma tabela

Este exemplo retorna a data da última atualização de cada objeto de estatísticas na tabela 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 as estatísticas corresponderem a um índice, o valor de stats_id na exibição do catálogo sys.stats será igual ao valor de index_id da exibição do catálogo sys.indexes e a consulta a seguir retornará o mesmo resultado da consulta anterior. Se as estatísticas não corresponderem a um índice, elas estarão nos resultados de sys.stats mas não nos resultados de 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  

Consulte Também

Funções de sistema (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
sp_autostats (Transact-SQL)
Estatísticas
sys.dm_db_stats_properties (Transact-SQL)
sys.stats
Estatísticas no Microsoft Fabric