我正在寻找一个SQL Server 2005查询,它将列出所有索引以及各自的STATISTICS_NORECOMPUTE值。我没有在sysindexes中看到任何与该值对应的明显值。
答案 0 :(得分:8)
sys.stats中的列no_recompute
表示
每个索引都有一个具有相同名称和ID的相应统计信息行(sys.indexes.object_id = sys.stats.object_id AND sys.indexes.index_id = sys.stats.stats_id),但并非每个统计信息行都有相应的指数。
因此,sys.indexes和sys.stats之间的JOIN将匹配您的索引
原因:
答案 1 :(得分:4)
您可以使用此查询:
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
答案 2 :(得分:0)
DoubleJ查询对我来说似乎是错误的。您可以使用此查询查找无重新计算索引:
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