首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找statistics_norecompute = ON的索引

如何查找statistics_norecompute = ON的索引
EN

Stack Overflow用户
提问于 2011-06-02 20:08:20
回答 3查看 3.9K关注 0票数 8

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-02 20:10:41

该列是sys.stats中的no_recompute,其内容为

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

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

原因:

可以用于列或索引

  • 一个索引只有一个应用于该索引的统计信息,而不是索引本身的
票数 8
EN

Stack Overflow用户

发布于 2014-02-14 05:10:16

您可以使用以下查询:

代码语言:javascript
复制
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
票数 5
EN

Stack Overflow用户

发布于 2019-05-06 00:01:22

DoubleJ查询在我看来是错误的。您可以使用以下查询来查找无重新计算的索引:

代码语言:javascript
复制
SELECT 
    OBJECT_NAME(i.object_id) AS table_name,
    i.name AS index_name,
    s.name
FROM
    sys.indexes AS i
    LEFT JOIN sys.stats AS s
    ON i.index_id = s.stats_id
    AND i.object_id = s.object_id
WHERE
    s.no_recompute = 1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6214319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档