Sql Server优化---统计信息维护策略
本文出处: http://www.cnblogs.com/wy123/p/5748933.html 首先解释一个概念,统计信息是什么: 简单说就是对某些字段数据分布的一种描述,让SQL Server大概知道预期的数据大小,从而指导生成合理执行计划的一种数据库对象 默认情况下统计信息的更新策略: 1,表数据从0行变为1行 2,少于500行的表增加500行或者更多 3,当表中行多于500行时,数据的变化量大于500+20%*表中数据行数 非默认情况下,促使已有统计信息更新的因素(包括但不限于下面三种,别的我也没想起来): 1,rebulid\Reorg index 2,主动update statistics 3,数据库级别的sp_updatestats 开始问题: 对于大表的更新策略是:数据的变化量大于500+20%*表中数据行数 比如对于1000W数据量的表,数据变化要超过500+1000W*20%=2,000,500之后才能触发统计信息的更新, 这一点大多数情况下是无法接受的,为什么?因为该规则下触发统计信息更新的阈值太大,会导致某些统计信息长期无法更新, 由于统计信息导致的执行计划不合理的情况已经在实际业务中屡见不鲜,对于统计信息的更新已经显得非常必要 同时,仅仅靠sqlserver自己更新统计信息,也不一定可靠,因为统计信息中还要一个取样行数的问题