Поделиться через


STATS_DATE (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric

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

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

STATS_DATE ( object_id , stats_id )  

Аргументы

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

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

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

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

Замечания

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

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

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

Разрешения

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

Примеры

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

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

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

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

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

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