Sql server 2005 如何查找统计信息为ON的索引
我正在寻找一个SQL Server 2005查询,该查询将列出所有索引及其各自的统计值。我在sysindexes中没有看到与该值对应的任何明显值。该列为Sql server 2005 如何查找统计信息为ON的索引,sql-server-2005,Sql Server 2005,我正在寻找一个SQL Server 2005查询,该查询将列出所有索引及其各自的统计值。我在sysindexes中没有看到与该值对应的任何明显值。该列为no\u recompute,其中 每个索引都将有一个具有相同名称和ID(sys.indexes.object_ID=sys.stats.object_ID和sys.indexes.index_ID=sys.stats.stats_ID)的相应统计行,但并非每个统计行都有相应的索引 因此,sys.index和sys.stats之间的连接将为您匹配
no\u recompute
,其中
每个索引都将有一个具有相同名称和ID(sys.indexes.object_ID=sys.stats.object_ID和sys.indexes.index_ID=sys.stats.stats_ID)的相应统计行,但并非每个统计行都有相应的索引
因此,sys.index和sys.stats之间的连接将为您匹配索引
原因:
- 统计信息可以用于列或索引
- 一个索引只有一个统计量
- 统计信息\u NORECOMPUTE应用于该索引的统计信息,而不是索引本身
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
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