加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:54:19 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用SQL Server 2008 R2,并运行以下查询以尝试使用以下SQL查看我的数据库中上次更新索引的时间: SELECT last_system_update,last_user_update,OBJECT_NAME(object_id) AS tblNameFROM sys.dm_db_index_usage_statsWHERE database_id = DB_ID('mydataba
我正在使用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中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读