0

我作为开发人员使用 SQL Server 已经有一段时间了。

我学到的一件事是 SQL Server 管理帮助引擎创建优化执行计划的统计信息。

我无法弄清楚统计中的商店到底是什么?(我读到它保存了 Vector,但是 Vector 是什么?)

SQL Server 何时/在哪种情况下更新统计信息?

他们如何/为什么有时会不同步(旧统计数据)

如果旧的统计信息需要手动 DBA/开发人员干预,否则 SQL Server 将更新它们。

作为 DBA/开发人员如何找出统计信息是否 OLD?我们应该做什么?

4

2 回答 2

4

在此上下文中的统计信息是指 RDBMS 对给定索引的值进行的抽样。粗略地说,这让引擎了解了值的分布,并帮助它规划高效的查询。您可以使用DBCC SHOW_STATISTICS查看统计信息集的实际内容。

DBCC SHOW_STATISTICS (table_name, index_name)

随着表中的数据(以及因此索引值的分布)的变化,索引的统计数据可能会随着时间的推移而过时。这可能会导致查询执行计划不够理想,这就是为什么您应该致力于使统计信息保持最新。

您可以使用UPDATE STATISTICS T-SQL 命令手动更新统计信息,或将它们设置为自动更新。从第一个 MSDN 链接:

当自动更新统计信息选项 AUTO_UPDATE_STATISTICS 开启时,查询优化器确定统计信息何时可能过期,然后在查询使用它们时更新它们。

于 2012-07-04T03:12:23.960 回答
1

您可以通过以下方式查看您的统计信息是否是最新的:

select  object_name(ind.object_id) as TableName
,       ind.name as IndexName
,       stats_date(ind.object_id, ind.index_id) as StatisticsDate
FROM    sys.indexes ind
order by 
        stats_date(ind.object_id, ind.index_id) desc
于 2012-07-04T04:56:47.590 回答