沉默之都

沉默,造就了我们的冷酷-程序的威力
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

由于统计信息引起的性能灾难

Posted on 2010-08-04 12:58  基点项目师  阅读(339)  评论(0)    收藏  举报

某日,公司的某站点突然某个业务超时频频,遂检查数据库查询,发现简单的selectcount也非常之慢,检索top10也比较慢,这张表本身数据量并不大,只有1200多W,检查所有索引也都覆盖到,很奇怪的问题,最后发现是统计信息引起的问题。。

所谓统计信息:

按照默认设置,如果表中的某列没有索引,则SQL Server会自动为该列创建统计。然后,查询优化器评估该列中数据分布范围的统计信息,以选择一个更为有效的查询处理方案。分辨自动创建的统计很简单,在SQL Server 7.0SQL Server 2000中,自动创建的统计的前缀为_WA_Sys

如何获取统计信息呢?

dbcc show_statistics('表名',索引名)

即可看到某个索引的统计信息。

如何更新统计信息呢?

update statistics 表名

也可 update statistics 表名(索引名)