如何查找具有statistics_norecompute = ON的索引

JNa*_*ppi 7 sql-server-2005

我正在寻找一个SQL Server 2005查询,它将列出所有索引及其各自的STATISTICS_NORECOMPUTE值.我没有在sysindexes中看到任何与该值对应的明显值.

gbn*_*gbn 8

该列no_recomputesys.stats中说

每个索引都有一个具有相同名称和ID的相应统计信息行(sys.indexes.object_id = sys.stats.object_id AND sys.indexes.index_id = sys.stats.stats_id),但并非每个统计信息行都有相应的索引.

因此,sys.indexes和sys.stats之间的JOIN将匹配您的索引

原因:

  • 统计信息可以用于列或索引
  • 索引只有一个统计信息.
  • STATISTICS_NORECOMPUTE适用于该索引的统计信息,而不是索引本身


Dou*_*leJ 5

您可以使用此查询:

select TableName = so.name, 
       IndexName = si.name, 
       StatName = s.name, 
       s.no_recompute
  from sys.indexes si
           inner join sys.stats s on si.object_id = s.object_id
           inner join sys.objects so on si.object_id = so.object_id
  where     no_recompute = 0
        and so.[type] in ('U', 'V')
order by so.name, si.name, s.name
Run Code Online (Sandbox Code Playgroud)