我们多久更新一次SQL Server 2000中的统计信息?

时间:2020-03-06 14:42:04  来源:igfitidea点击:

我想知道更新统计信息之前是否对我们有帮助,我们怎么知道更新它们?

解决方案

exec sp_updatestats

是的,如果我们发现查询的效果不理想,那么更新统计信息将非常有帮助。这可以通过检查查询计划并注意何时执行表扫描或者索引扫描(而不是索引查找)来证明。所有这些都假定我们已正确设置索引。

还有UPDATE STATISTICS命令,但我个人从未使用过该命令。

通常将统计信息更新添加到维护计划中(就像在企业管理器定义的维护计划中一样)。这样,无论每天如何,它都会按计划进行。

SQL Server 2000使用统计信息来制定有关查询执行的良好决策,因此它们肯定会有所帮助。

最好同时重建索引(DBCC DBREINDEX和DBCC INDEXDEFRAG)。

在发生以下事件之后,必须更新统计信息:
记录插入到表中
记录从表中删除
记录在表中更新

如果大型数据库每天都有数百万条记录,并且每天要进行大量写入操作,那么我们可能应该确定非高峰时间来安排索引更新。

另外,我们需要考虑流量类型。如果表中有许多记录(具有数百万个记录)且具有许多外键依赖性,并且我们对读操作的写入比例较大,则可能需要考虑关闭自动统计信息重新计算(注意:此功能将在将来的SQL Server,但对于SQL Server 2000,我们应该可以)。这告诉引擎不要在每个INSERT,DELETE或者UPDATE上重新计算统计信息,并使这些操作的性能更高。

索引不是笑的事。它们是高性能数据库的心脏和灵魂。

如果我们重建索引,则这些索引的统计信息将自动重建。
如果时间允许,那么最好每天晚上进行一次维护计划一部分的UPDATE STATISTICS(如果重建索引的频率低于此频率)。

SQL Server:要确定过时的统计信息是否是查询性能不佳的原因,请在Management Studio中打开"查询->显示估计的执行计划"(CTRL-L)并运行查询。打开另一个窗口,粘贴相同的查询,然后在Management Studio中打开"查询->显示实际执行计划"(CTRL-M),然后重新运行查询。如果执行计划不同,则统计数据很可能已过时。