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