微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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中.

原文地址:https://www.jb51.cc/mssql/74960.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐