SQL Server索引使用情况统计何时更新?

前端之家收集整理的这篇文章主要介绍了SQL Server索引使用情况统计何时更新?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用sql Server 2008 R2,并运行以下查询以尝试使用以下sql查看我的数据库中上次更新索引的时间:
SELECT last_system_update,last_user_update,OBJECT_NAME(object_id) AS tblName
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID('mydatabase')

last_user_update字段是正确的,并且包含NULL,其中自上次重新启动sql Server以来未对表进行任何更新.

当我运行以下查询来重建索引时,我希望last_system_update字段包含一个日期,以指示索引已重建:

ALTER INDEX ALL ON dbo.MyTable
REBUILD

但是,此字段仍为NULL.实际上,对于服务器上所有数据库中的所有索引,last_system_update字段为空(NULL). last_user_update也不会改变.

我也尝试过:

UPDATE STATISTICS dbo.MyTable

但没有运气.那么这个字段何时更新?我怎么能强迫它更新?

解决方法

您可以使用以下查询来确定上次更新索引的时间,该索引使用 STATS_DATE()
USE your_db;
SELECT t.name AS Table_Name,i.name AS Index_Name,i.type_desc AS Index_Type,STATS_DATE(i.object_id,i.index_id) AS Date_Updated
FROM sys.indexes i
JOIN sys.tables t
  ON t.object_id = i.object_id
WHERE i.type > 0 
ORDER BY t.name ASC,i.type_desc ASC,i.name ASC;

我相信这只适用于sql Server 2005或更新版本,因为sys.indexes不在sql Server 2000中.

猜你在找的MsSQL相关文章