2008-09-25 90 views

回答

4
exec sp_updatestats 

是的,如果您发现查询的表现不尽如人意,更新统计信息会非常有帮助。这通过检查查询计划来证明,并且例如在执行表扫描或索引扫描而不是索引查找时发现。所有这些都假定你已经正确设置了你的索引。

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

+0

来自BOL:sp_updatestats通过指定ALL关键字,有效地执行UPDATE STATISTICS对数据库中的所有用户定义和内部表。 – 2008-09-25 07:50:40

3

通常将统计信息更新添加到维护计划中(如在企业管理器定义的维护计划中)。这样它就按计划发生 - 每天,每周,不管。

SQL Server 2000使用统计信息做出有关查询执行的良好决策,所以它们肯定有帮助。

这是在同一时间(DBCC DBREINDEX和DBCC INDEXDEFRAG),以重建索引是一个好主意。

1

更新统计下列事件后,有必要:
- 记录插入到表
- 记录被从表中删除
- 记录在你的餐桌

更新。如果你有一个大型数据库数百万条记录每天都会获得大量的写入数据,因此您可能应该确定非高峰时间来安排索引更新。

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

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

2

如果重建索引,那么这些索引的统计信息会自动重建。 如果您的时间表允许,那么运行UPDATE STATISTICS部分维护计划是一个好主意,就像夜间一样频繁(如果您的索引重建频率低于此频率)。

SQL Server:要确定过时的统计数据是否导致查询执行效果不佳,请在Management Studio中打开“Query-> Display Estimated Execution Plan”(CTRL-L)并运行查询。打开另一个窗口,粘贴相同的查询,然后在Management Studio中打开“查询 - >显示ActualExecution计划”(CTRL-M),然后重新运行查询。如果执行计划不同,统计数据很可能会过时。

相关问题