我使用以下查询来分析SQL Server
中索引的使用情况。
SELECT *
FROM sys.dm_db_index_usage_stats A
WHERE A.database_id = DB_ID()
如何重置此系统表中的所有数据。(我使用的是SQL Server 2012)
提前致谢
答案 0 :(得分:10)
reset
是什么意思..你想重置表格中的索引使用统计数据吗?
取自Here
使用情况统计信息:可在sys.dm_db_index_usage_stats中找到。 索引使用情况统计信息可跟踪搜索和扫描等内容 SELECT查询。它们不会持久化并在重新启动sql时重置 服务器。如果基础索引是,则这些统计信息也会重置 重建“ALTER INDEX ... REBUILD”,但没有“ALTER INDEX ...... REORG“
如上所述,您无法手动重置它。看看这篇帖子肯定会说同样的话
答案 1 :(得分:0)
如前所述,如果不重新启动 SQL Server,您就无法真正重置它。
但是
为什么要重置它?可能是因为您对索引进行了更改,只是想看看使用情况发生了怎样的变化,对吗?
在这种情况下,您可以硬编码现有值到您的查询中,然后减去它以获得新的统计数据。
“硬编码”是指加入一个 VALUES
伪表,类似这样
--your SELECT goes here
--your FROM goes here
--add this JOIN
JOIN ( VALUES('IX_index1', 2412727),
('IX_index2', 1630517),
('IX_index3', 514129)) o(name, seeks) ON o.name=indexes.name
-- rest of your query
现在您可以将其添加到您的 SELECT 中以获取差异:dm_db_index_usage_stats.user_seeks - o.seeks
简而言之:
dm_db_index_usage_stats
中选择现有的使用统计数据