STATS_DATE (Transact-SQL)

Область применения: SQL Server (все поддерживаемые версии) База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Analytics Platform System (PDW)

Возвращает дату последнего обновления статистики для таблицы или индексированного представления.

Дополнительные сведения об обновлении статистики см. в разделе Статистика.

Topic link iconСинтаксические обозначения в Transact-SQL

Синтаксис

STATS_DATE ( object_id , stats_id )  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

object_id
Идентификатор таблицы или индексированного представления, содержащего статистику.

stats_id
Идентификатор объекта статистики.

Типы возвращаемых значений

Возвращает datetime в случае успешного выполнения. Возвращает NULL, если большой двоичный объект статистики не был создан.

Примечания

Системные функции можно использовать в списке выбора, в предложении WHERE и в любом месте, где может быть использовано выражение.

Дата обновления статистики хранится в большом двоичном объекте статистики вместе с гистограммой и вектором плотности, а не в метаданных. Если нет данных для создания статистических данных, большой двоичный объект статистики не создается и дата недоступна. Это происходит с отфильтрованной статистикой, для которой предикат не возвращает ни одной строки, или с новыми пустыми таблицами.

Если статистика соответствует индексу, то значение stats_id в представлении каталога sys.stats совпадает со значением index_id в представлении каталога sys.indexes.

Разрешения

Необходимо членство в предопределенной роли базы данных db_owner или разрешение на просмотр метаданных для таблицы или индексированного представления.

Примеры

A. Возвращение даты последнего обновления статистики для таблицы

В следующем примере возвращается дата последнего обновления для каждого объекта статистики по таблице 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  

Если статистика соответствует индексу, то значение stats_id в представлении каталога sys.stats совпадает со значением index_id в представлении каталога sys.indexes и следующий запрос возвращает те же результаты, что и предшествующий. Если статистика не соответствует индексу, то она будет содержаться в результатах sys.stats, но не в результатах 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  

Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)

Б. Определение времени последнего обновления именованной статистики

В приведенном ниже примере создается статистика по столбцу LastName таблицы DimCustomer. Затем выполняется запрос для отображения даты статистики. После этого статистика обновляется, и запрос выполняется еще раз для отображения обновленной даты.

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

В. Просмотр даты последнего обновления для всех объектов статистики по таблице

В этом примере возвращается дата последнего обновления для каждого объекта статистики в таблице 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  

Если статистика соответствует индексу, то значение stats_id в представлении каталога sys.stats совпадает со значением index_id в представлении каталога sys.indexes и следующий запрос возвращает те же результаты, что и предшествующий. Если статистика не соответствует индексу, то она будет содержаться в результатах sys.stats, но не в результатах 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  

См. также:

Системные функции (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
Хранимая процедура sp_autostats (Transact-SQL)
Статистика
sys.dm_db_stats_properties (Transact-SQL)
sys.stats