43

数据库优化顾问建议我在我的数据库中创建一堆统计信息。我有点像 SQL n00b,所以这是我第一次遇到这样的生物。MSDN 中的条目有点迟钝 - 有人可以解释一下这到底是做什么的,为什么这是一个好主意?

4

5 回答 5

38

基于成本的查询优化是一种使用直方图和行数来启发式估计执行查询计划的成本的技术。当您向 SQL Server 提交查询时,它会对其进行评估并生成一系列查询计划,并使用启发式方法来估算成本。然后它选择最便宜的查询计划。

查询优化器使用统计信息来计算查询计划的成本。如果统计数据丢失或过时,则没有正确的数据来估计计划。在这种情况下,它可以生成中等或高度次优的查询计划。

SQL Server 将(在大多数情况下)自动生成大多数表和索引的统计信息,但您可以补充这些信息或强制刷新。查询调优向导可能在查询中发现了一些缺失的统计信息或识别出应该为其添加统计信息的连接。

于 2008-09-24T16:58:53.927 回答
8

优化器使用统计信息来确定是否为您的查询使用特定索引。如果没有统计信息,优化器无法知道有多少行将匹配给定条件,导致它必须针对“多行”情况进行优化,这可能不是最优的。

于 2008-09-24T16:21:44.343 回答
3

简而言之,它使您的数据库准备好有效工作。通过准备好统计数据,您的数据库(在它需要计算出执行计划之前)知道什么可能是其最有效的路线。

于 2008-09-24T16:16:12.563 回答
2

基本上只是用你拥有的索引类型、行数等来更新 SQL。这有助于 SQL 更好地估计如何执行你的查询。保持统计数据更新是一件好事。

于 2008-09-24T16:16:15.853 回答
2

从 BOL...

在提供的列或表或索引视图的列集上创建直方图和关联的密度组(集合)。字符串摘要统计信息还基于 char、varchar、varchar(max)、nchar、nvarchar、nvarchar(max)、text 和 ntext 列构建的统计信息创建。查询优化器使用此统计信息来选择最有效的计划来检索或更新数据。最新的统计数据使优化器能够准确评估不同查询计划的成本,并选择一个高质量的计划。

于 2008-09-24T16:16:18.677 回答