Partage via


STATS_DATE (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric

Retourne la date de la mise à jour la plus récente des statistiques pour une table ou vue indexée.

Pour plus d’informations sur la mise à jour de statistiques, consultez Statistiques.

Conventions de la syntaxe Transact-SQL

Syntaxe

STATS_DATE ( object_id , stats_id )  

Arguments

object_id
ID de la table ou vue indexée avec les statistiques.

stats_id
ID de l'objet de statistiques.

Types de retour

Renvoie datetime en cas de réussite. Renvoie NULL si un objet blob de statistiques n’a pas été créé.

Remarques

Les fonctions système peuvent être utilisées dans la liste de sélection, dans la clause WHERE et partout où une expression peut être utilisée.

La date de mise à jour des statistiques est stockée dans l’objet blob de statistiques avec l’histogramme et le vecteur de densité, et non dans les métadonnées. Quand aucune donnée n’est lue pour générer des données de statistiques, l’objet blob de statistiques n’est pas créé et la date n’est pas disponible. C’est le cas pour les statistiques filtrées pour lesquelles le prédicat ne renvoie aucune ligne, ou pour les nouvelles tables vides.

Si les statistiques correspondent à un index, la valeur stats_id dans l’affichage catalogue sys.stats est identique à la valeur index_id dans l’affichage catalogue sys.indexes.

Autorisations

Requiert l'appartenance au rôle de base de données fixe db_owner ou l'autorisation d'afficher les métadonnées pour la table ou vue indexée.

Exemples

R. Retourner les dates des statistiques les plus récentes pour une table

L'exemple suivant retourne la date de la mise à jour la plus récente de chaque objet de statistiques dans la table 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 les statistiques correspondent à un index, la valeur stats_id dans la vue de catalogue sys.stats est identique à la valeur index_id dans la vue de catalogue sys.indexes, et la requête suivante retourne les mêmes résultats que la requête précédente. Si les statistiques ne correspondent pas à un index, elles figurent dans les résultats sys.stats mais pas dans les résultats 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  

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

B. Découvrir quand une statistique nommée a été mise à jour pour la dernière fois

L’exemple suivant crée des statistiques sur la colonne LastName de la table DimCustomer. Il exécute alors une requête pour afficher la date des statistiques. Ensuite, il met à jour les statistiques et réexécute la requête pour afficher la date de mise à jour.

--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. Afficher la date de la dernière mise à jour de toutes les statistiques d’une table

Cet exemple retourne la date à laquelle chaque objet de statistiques sur la table DimCustomer a été mis à jour pour la dernière fois.

--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 les statistiques correspondent à un index, la valeur stats_id dans la vue de catalogue sys.stats est identique à la valeur index_id dans la vue de catalogue sys.indexes, et la requête suivante retourne les mêmes résultats que la requête précédente. Si les statistiques ne correspondent pas à un index, elles figurent dans les résultats sys.stats mais pas dans les résultats 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  

Voir aussi

Fonctions système (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
sp_autostats (Transact-SQL)
Statistiques
sys.dm_db_stats_properties (Transact-SQL)
sys.stats
Statistiques dans Microsoft Fabric