为什么在sys.dm_db_index_usage_stats中找不到所有索引对象

时间:2017-01-03 06:02:21

标签: sql indexing sql-server-2012 database-administration

我们通常通过查询查询条件来制作索引,例如。查询列中使用的列,其中condition,join,所以为什么没有使用所有索引,以及为什么在 sys.dm_db_index_usage_stats

中找不到所有索引对象的列

1 个答案:

答案 0 :(得分:0)

我假设您要问为什么不在sys.dm_db_index_usage_stats中显示所有索引。 sys.dm_db_index_usage_stats仅显示自启动sql server以来的统计信息。因此,重新启动SQL服务器后,所有统计信息都将重置为空。如果自SQL Server启动以来尚未使用索引,则它将无法显示在sys.dm_db_index_usage_stats中。

如果您的问题是为什么不使用所有索引,那么可能是因为SQL Server为您的查询提供了更好的执行计划(或认为它有)。请记住:索引对于加快查询速度并不是一个神奇的冒犯。不要因为你可以创建索引。 Kimberly Tripp有一个很好的博客:http://www.sqlskills.com/blogs/kimberly/indexes-just-because-you-can-doesnt-mean-you-should/