我使用SQL Server 2008 R2,並運行下面的查詢,試圖看到當指數最後在我的數據庫使用下面的SQL更新:何時更新SQL Server索引使用情況統計信息?
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
,但沒有運氣。那麼這個領域何時更新?我該如何強制更新?
我還沒有檢查過它,但我的印象是sys.dm_db_index_usage_stats每次在查詢中使用(user_updates)時都會更新;我認爲重建索引不會在規則下計算。您可以編寫一個查詢來選擇並使用查詢提示來觸摸索引。 – u07ch
感謝u07ch。 last_user_scan/seek的統計信息很好。我試圖讓上一次索引被重建/修改 - 但不是編輯表格。 – geographika