STATS_DATE (Transact-SQL)
Se aplica a: punto de conexión de SQL Server
Azure SQL Database
Azure SQL Instancia administrada
punto de conexión de SQL Analytics Analytics Platform System (PDW) de SQL Analytics
System (PDW)
de SQL Server en Microsoft Fabric
Warehouse en Microsoft Fabric
Devuelve la fecha de la actualización más reciente de las estadísticas de una tabla o vista indizada.
Para más información sobre cómo actualizar las estadísticas, vea Estadísticas.
Convenciones de sintaxis de Transact-SQL
Sintaxis
STATS_DATE ( object_id , stats_id )
Nota:
Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.
Argumentos
object_id
Identificador de la tabla o vista indizada con las estadísticas.
stats_id
Identificador del objeto de estadísticas.
Tipos de valor devueltos
Devuelve datetime si es correcto. Devuelve NULL si no se creó un blob de estadísticas.
Observaciones
Las funciones del sistema se pueden utilizar en la lista de selección, en la cláusula WHERE y en cualquier lugar donde se permita una expresión.
La fecha de actualización de estadísticas se almacena en el objeto BLOB de estadísticas junto con el histograma y el vector de densidad, pero no en los metadatos. Cuando no se lee ningún dato con el que generar datos de estadísticas, el BLOB de estadísticas no se crea y la fecha no está disponible. Esto sucede en las estadísticas filtradas, en las que el predicado no devuelve ninguna fila, o en las tablas nuevas vacías.
Si las estadísticas corresponden a un índice, el valor de stats_id de la vista de catálogo sys.stats es el mismo que el valor de index_id de la vista de catálogo sys.indexes.
Permisos
Es necesaria la pertenencia al rol fijo de servidor db_owner o al rol fijo de base de datos maestra o al rol fijo de servidor sysadmin.
Ejemplos
A. Devolver las fechas de las estadísticas más recientes de una tabla
En el ejemplo siguiente, se devuelve la fecha de la actualización más reciente de cada objeto de estadísticas de la tabla 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
Si las estadísticas corresponden a un índice, el valor de stats_id de la vista de catálogo sys.stats es el mismo que el valor de index_id de la vista de catálogo sys.indexes, y la consulta siguiente devuelve los mismos resultados que la consulta precedente. Si las estadísticas no corresponden a un índice, aparecen en los resultados de sys.stats pero no en los 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
Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)
B. Saber cuándo se actualizaron las estadísticas con nombre por última vez
En el siguiente ejemplo se crean estadísticas basadas en la columna LastName de la tabla DimCustomer. Luego, se ejecuta una consulta para mostrar la fecha de las estadísticas. Por último, las estadísticas se actualizan y la consulta se vuelve ejecutar para mostrar la fecha de actualización.
--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. Ver la fecha de última actualización de todas las estadísticas en una tabla
En este ejemplo se devuelve la fecha de última actualización de cada objeto de estadísticas en la tabla 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
Si las estadísticas corresponden a un índice, el valor de stats_id de la vista de catálogo sys.stats es el mismo que el valor de index_id de la vista de catálogo sys.indexes, y la consulta siguiente devuelve los mismos resultados que la consulta precedente. Si las estadísticas no corresponden a un índice, aparecen en los resultados de sys.stats pero no en los 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 también
Funciones del sistema (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
sp_autostats (Transact-SQL)
estadísticas
sys.dm_db_stats_properties (Transact-SQL)
sys.stats
Estadísticas en Microsoft Fabric