首页 > 解决方案 > SQL Server - sys.dm_db_index_usage_stats 未从视图接收统计信息

问题描述

为了大致了解 SQL Server 中表的使用情况统计信息,我们创建了一个查询,该查询从 sys.dm_db_index_usage_stats 中检索使用情况统计信息。

查询如下:

Select 
    iif(t.TABLE_TYPE = 'BASE TABLE', 'Table', 'View') as 'Type'
    , t.TABLE_CATALOG
    , t.TABLE_SCHEMA
    , t.TABLE_NAME
    , max(tst.LastReferenced) as 'LastReferenced'
    , getdate() as 'Date'
FROM INFORMATION_SCHEMA.TABLES t
LEFT JOIN (
                        SELECT 
                        tst.object_id
                        ,(SELECT Max(v) FROM (VALUES (tst.Last_user_update), (tst.Last_user_seek), (tst.Last_user_scan), (tst.Last_user_lookup)) AS value(v)) as 'LastReferenced'
                        FROM sys.dm_db_index_usage_stats tst
                    )tst on OBJECT_NAME(tst.object_id) = t.TABLE_NAME
WHERE t.TABLE_NAME not like ''_TMP%''
GROUP BY
    t.TABLE_CATALOG
    , t.TABLE_SCHEMA
    , t.TABLE_NAME
    , t.TABLE_TYPE

但是,对于我们的一种观点,在对表执行以下操作时:

没有使用统计信息传递到我们的 sys.dm_db_index_usage_stats 表。对于同一数据库中的其他视图并执行相同的操作,这些统计信息将被传递。

由于可能已重置统计信息,因此没有重新启动服务器或清除这些表。此外,我们每 15 分钟检查一次这些统计信息,因此这应该不是问题。

此外,从 sys.dm_db_index_usage_stats 到 INFORMATION_SCHEMA.TABLES 的连接提供了一个空值,因为 dm_db_index_usage_stats 表中不包含此特定视图。

问题

  1. 对于这个特定的视图,怎么可能没有处理使用统计信息?
  2. 有没有办法访问这些统计信息或使它们可用于 sys.dm_db_index_usage_stats 表?

期待你的智慧:)

标签: sqlsql-serverusage-statistics

解决方案


推荐阅读