Bonjour,
Les statistiques des objets de base de données doivent être à jour pour prendre la bonne décision de l'optimiseur SQL Server.
Si les statistiques des objets de la base de données ne sont pas à jour, l'optimiseur de base de données SQL Server prendra une mauvaise décision pour le plan d'exécution de la transaction.
Vous pouvez vérifier toutes les statistiques des objets de la base de données avec la requête suivante.
SELECT object_name(si.[object_id]) AS [TableName] , CASE WHEN si.[stats_id] = 0 then 'Heap' WHEN si.[stats_id] = 1 then 'CL' WHEN INDEXPROPERTY ( si.[object_id], si.[name], 'IsAutoStatistics') = 1 THEN 'Stats-Auto' WHEN INDEXPROPERTY ( si.[object_id], si.[name], 'IsHypothetical') = 1 THEN 'Stats-HIND' WHEN INDEXPROPERTY ( si.[object_id], si.[name], 'IsStatistics') = 1 THEN 'Stats-User' WHEN si.[stats_id] BETWEEN 2 AND 1004 THEN 'NC ' + RIGHT('00' + convert(varchar, si.[stats_id]), 3) ELSE 'Text/Image' END AS [IndexType] , si.[name] AS [IndexName] , si.[stats_id] AS [IndexID] , CASE WHEN si.[stats_id] BETWEEN 1 AND 250 AND STATS_DATE (si.[object_id], si.[stats_id]) < DATEADD(m, -1, getdate()) THEN '!! More than a month OLD !!' WHEN si.[stats_id] BETWEEN 1 AND 250 AND STATS_DATE (si.[object_id], si.[stats_id]) < DATEADD(wk, -1, getdate()) THEN '! Within the past month !' WHEN si.[stats_id] BETWEEN 1 AND 250 THEN 'Stats recent' ELSE '' END AS [Warning] , STATS_DATE (si.[object_id], si.[stats_id]) AS [Last Stats Update] , no_recompute FROM sys.stats AS si WHERE OBJECTPROPERTY(si.[object_id], 'IsUserTable') = 1 and STATS_DATE (si.[object_id], si.[stats_id]) is not null AND (INDEXPROPERTY ( si.[object_id], si.[name], 'IsAutoStatistics') = 1 OR INDEXPROPERTY ( si.[object_id], si.[name], 'IsHypothetical') = 1 OR INDEXPROPERTY ( si.[object_id], si.[name], 'IsStatistics') = 1) ORDER BY [Last Stats Update] go