geo*_*ika 6 sql indexing sql-server-2008
我正在使用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')
Run Code Online (Sandbox Code Playgroud)
该last_user_update领域是正确的,在没有更新已表,因为SQL Server的上次重新启动已取得含有NULL.
当我运行以下查询来重建索引时,我希望last_system_update字段包含一个日期,以指示索引已重建:
ALTER INDEX ALL ON dbo.MyTable
REBUILD
Run Code Online (Sandbox Code Playgroud)
但是,此字段仍为NULL.实际上,对于服务器上所有数据库中的所有索引,last_system_update字段为空(NULL).last_user_update也不会改变.
我也尝试过:
UPDATE STATISTICS dbo.MyTable
Run Code Online (Sandbox Code Playgroud)
但没有运气.那么这个字段何时更新?我怎么能强迫它更新?
bha*_*mby 10
您可以使用以下查询来确定上次更新索引的时间,该索引使用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;
Run Code Online (Sandbox Code Playgroud)
我相信这只适用于SQL Server 2005或更新版本,因为sys.indexes不在SQL Server 2000中.
| 归档时间: |
|
| 查看次数: |
5485 次 |
| 最近记录: |