我想知道更新统计数据是否曾帮助过你,你怎么知道更新它们?
答案 0 :(得分:4)
exec sp_updatestats
是的,如果您发现查询的效果不佳,更新统计信息会非常有用。这可以通过检查查询计划并注意何时(例如,正在执行表扫描或索引扫描而不是索引搜索)来证明。所有这些都假定您已正确设置索引。
还有UPDATE STATISTICS命令,但我个人从未使用过它。
答案 1 :(得分:3)
将统计信息更新添加到维护计划中很常见(如在企业管理器定义的维护计划中)。这样就按计划发生 - 每天,每周,等等。
SQL Server 2000使用统计信息来做出有关查询执行的良好决策,因此它们肯定有帮助。
同时重建索引(DBCC DBREINDEX和DBCC INDEXDEFRAG)是个好主意。
答案 2 :(得分:2)
如果重建索引,则会自动重建这些索引的统计信息。 如果您的时间范围允许,那么运行部分维护计划的UPDATE STATISTICS是一个好主意,就像夜间一样(如果您的索引重建次数少于此次)。
SQL Server:要确定过期统计信息是否导致查询效果不佳,请在Management Studio中启用“查询 - >显示估计执行计划”(CTRL-L)并运行查询。打开另一个窗口,粘贴相同的查询并在Management Studio中启用“查询 - >显示实际执行计划”(CTRL-M)并重新运行查询。如果执行计划不同,那么统计数据很可能已过时。
答案 3 :(得分:1)
在以下事件发生后,必须更新统计数据:
- 记录被插入您的表格中
- 记录从表中删除
- 记录在您的表格中更新
如果您有一个包含数百万条记录的大型数据库,每天可以获得大量写入,那么您可能应该确定一个非高峰时间来安排索引更新。
此外,您需要考虑您的流量类型。如果在具有许多外键依赖关系的表中有很多(数百万)记录,并且您对读取的写入比例较大,则可能需要考虑关闭自动统计信息重新计算(注意:此功能将在以后的版本中删除SQL Server,但对于SQL Server 2000,你应该没问题)。这告诉引擎不要重新计算每个INSERT,DELETE或UPDATE的统计信息,并使这些操作更加高效。
指数不是笑话。它们是高性能数据库的核心和灵魂。