Partilhar via


STATS_DATE (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Devolve a data da atualização mais recente para estatísticas numa tabela ou vista indexada.

Para mais informações sobre a atualização de estatísticas, consulte Estatísticas.

Transact-SQL convenções de sintaxe

Sintaxe

STATS_DATE ( object_id , stats_id )  

Arguments

object_id
ID da tabela ou da vista indexada com as estatísticas.

stats_id
ID do objeto de estatística.

Tipos de devolução

Retorna a data e hora do sucesso. Devolve NULL se não foi criado um blob de estatísticas.

Observações

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

A data de atualização das estatísticas é armazenada no objeto de blob de estatísticas juntamente com o de histograma e o vetor de densidade , não nos metadados. Quando nenhum dado é lido para gerar dados estatísticos, o blob de estatísticas não é criado e a data não está disponível. Este é o caso de estatísticas filtradas para as quais o predicado não devolve linhas, ou para novas tabelas vazias.

Se as estatísticas corresponderem a um índice, o valor stats_id na vista de catálogo sys.stats é o mesmo que o valor index_id na vista de catálogo sys.indexes .

Permissions

Requer pertença à db_owner função fixa na base de dados ou permissão para visualizar os metadados da tabela ou da vista indexada.

Examples

A. Devolva as datas das estatísticas mais recentes para uma tabela

O exemplo seguinte devolve a data da atualização mais recente para cada objeto de estatísticas na Person.Address tabela.

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 stats_id na vista de catálogo sys.stats é o mesmo que o valor index_id na vista de catálogo sys.indexes , e a consulta seguinte devolve os mesmos resultados da consulta anterior. Se as estatísticas não correspondem a um índice, estão nos resultados do sys.stats mas não nos resultados do 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 and Analytics Platform System (PDW)

B. Saiba quando uma estatística nomeada foi atualizada pela última vez

O exemplo seguinte cria estatísticas na coluna Último Nome da tabela DimCustomer. Depois, executa uma consulta para mostrar a data das estatísticas. Depois verifica as estatísticas e executa novamente a consulta para mostrar a data de atualização.

--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. Consulte a data da última atualização para todas as estatísticas numa tabela

Este exemplo devolve a data em que cada objeto de estatísticas na tabela DimCustomer foi atualizado pela última vez.

--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 stats_id na vista de catálogo sys.stats é o mesmo que o valor index_id na vista de catálogo sys.indexes , e a consulta seguinte devolve os mesmos resultados da consulta anterior. Se as estatísticas não correspondem a um índice, estão nos resultados do sys.stats mas não nos resultados do 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  

Ver também

Funções do sistema (Transact-SQL)
ATUALIZAR ESTATÍSTICAS (Transact-SQL)
sp_autostats (Transact-SQL)
Estatísticas
sys.dm_db_stats_properties (Transact-SQL)
sys.stats
Estatísticas no Microsoft Fabric