2009-06-09 11 views
3

Existe-t-il un moyen rapide et facile de lister tous les index de la base de données mis à jour pour la dernière fois? La réponse préférée serait une requête. En outre, il est possible de déterminer la "qualité" des statistiques: FULLSCAN, n SAMPLE, etc.quand les statistiques d'index ont-elles été mises à jour pour la dernière fois?

EDIT
cela a fonctionné pour ce que je avais besoin, un léger mod @OrbMan grande réponse ...

SELECT 
    STATS_DATE(i.object_id, i.index_id) AS LastStatisticsDate 
     ,o.Name AS TableName 
     ,i.name AS IndexName 
    FROM sys.objects   o 
     INNER JOIN sys.indexes i ON o.object_id = i.object_id 
    WHERE o.is_ms_shipped=0 
    ORDER BY 1 DESC 

Répondre

7

Vous pouvez faire: STATS_DATE (table_id, index_id)

Alors:

USE AdventureWorks; 
GO 
SELECT 'Index Name' = i.name, 'Statistics Date' = STATS_DATE(i.object_id, i.index_id) 
FROM sys.objects o 
JOIN sys.indexes i ON o.name = 'Address' AND o.object_id = i.object_id; 
GO 

où Adresse est le nom de la table dont vous souhaitez examiner les index.

+0

Fonctionne sur ma machine – Sung