某日,公司的某站点突然某个业务超时频频,遂检查数据库查询,发现简单的selectcount也非常之慢,检索top10也比较慢,这张表本身数据量并不大,只有1200多W,检查所有索引也都覆盖到,很奇怪的问题,最后发现是统计信息引起的问题。。
所谓统计信息:
按照默认设置,如果表中的某列没有索引,则SQL Server会自动为该列创建统计。然后,查询优化器评估该列中数据分布范围的统计信息,以选择一个更为有效的查询处理方案。分辨自动创建的统计很简单,在SQL Server 7.0和SQL Server 2000中,自动创建的统计的前缀为_WA_Sys。
如何获取统计信息呢?
dbcc show_statistics('表名',索引名)
即可看到某个索引的统计信息。
如何更新统计信息呢?
update statistics 表名
也可 update statistics 表名(索引名)