“创build统计信息”在SQL Server 2005中做什么?
数据库优化顾问build议我在我的数据库中创build一堆统计数据。 我是一个SQL n00b的东西,所以这是我第一次碰到这样的生物。 在MSDN中的条目是一点点钝 – 有人可以解释这到底是什么,为什么这是一个好主意?
基于成本的查询优化是一种使用直方图和行计数来启发式地估计执行查询计划的成本的技术。 向SQL Server提交查询时,会对其进行评估,并生成一系列查询计划 ,并使用启发式来估计成本。 然后select最便宜的查询计划。
查询优化器使用统计信息来计算查询计划的成本。 如果统计信息丢失或过期,则没有正确的数据来估计计划。 在这种情况下,它可以生成适度或非常不理想的查询计划。
SQL Server将(在大多数情况下)自动生成大多数表和索引的统计信息,但是可以补充这些或强制刷新。 查询调整向导大概会在查询中发现一些缺less的统计信息或标识的联接,以便为其添加统计信息。
优化器使用统计信息来确定是否为查询使用特定的索引。 没有统计信息,优化器没有办法知道有多less行将匹配给定条件,导致它不得不针对“多行”情况进行优化,这可能不是最优的。
简而言之,它使您的数据库准备工作有效。 通过准备好的统计数据,数据库知道(在需要确定执行计划之前)什么可能是最有效的路线。
基本上只是保持SQL更新与你有什么types的索引,行数等,这有助于SQL更好地估计如何执行您的查询。 保持统计更新是一件好事。
从BOL …
在提供的列或表或索引视图的一组列上创build直方图和关联密度组(集合)。 在char,varchar,varchar(max),nchar,nvarchar,nvarchar(max),text和ntext列上构build的统计信息上也会创buildstring汇总统计信息。 查询优化器使用此统计信息来select检索或更新数据的最有效的计划。 最新统计信息允许优化器准确评估不同查询计划的成本,并select高质量的计划。