小编use*_*123的帖子

索引使用统计 DMV 表示没有索引活动

我正在尝试获取有关索引的信息。根据几个网站,下面的 TSQL 查询应该将索引信息加入索引表,返回索引和相关信息。下面的查询被简化为裸连接,因为我目前正在尝试返回数据,然后从那里返回我需要的内容:

SELECT *
FROM sys.indexes i
     INNER JOIN sys.dm_db_index_usage_stats s ON i.object_id = s.object_id
Run Code Online (Sandbox Code Playgroud)

此查询不返回任何内容。然而,在几个数据库中有数百个表至少有一个索引,根据网上的各种文章,这个查询应该返回这些索引(因为它连接到对象 ID)。此外,如果我尝试将查询更改为以下查询,它也不会返回任何内容:

SELECT *
FROM DATABASENAME.sys.indexes i
    INNER JOIN DATABASENAME.sys.dm_db_index_usage_stats s ON i.object_id = s.object_id
Run Code Online (Sandbox Code Playgroud)

为什么这个查询不返回数据?

添加

如果我运行以下查询,我会从这两个SELECT查询中收到数据:

SELECT *
FROM sys.indexes

SELECT *
FROM sys.dm_db_index_usage_stats
Run Code Online (Sandbox Code Playgroud)

问题(在原始查询上)是object_id连接。但是,我不知道为什么我在一个表中的对象在另一个表中不存在。

最终:Martin 最初给出了正确答案——即使数据是从sys.dm_db_index_usage_stats表中返回的,它也在msdb数据库中,而不是我正在寻找的特定数据库中。我再次对表运行查询,并在表中找到了数据库 ID。不确定为什么该sys.dm_db_index_usage_stats表没有保留先前对该数据库查询的数据。

index sql-server

7
推荐指数
1
解决办法
1393
查看次数

标签 统计

index ×1

sql-server ×1