Database Tuning Advisor建议我在我的数据库中创建一堆统计信息.我是一个SQL n00b,所以这是我第一次遇到这样的生物.MSDN中的条目有点迟钝 - 有人可以解释这究竟是什么,以及为什么这是一个好主意?
基于成本的查询优化是一种使用直方图和行计数来启发式地估计执行查询计划的成本的技术.当您向SQL Server提交查询时,它会对其进行评估并生成一系列查询计划,并使用启发式方法来估算成本.然后它选择最便宜的查询计划.
查询优化器使用统计信息来计算查询计划的成本.如果统计数据丢失或过期,则没有正确的数据来估算计划.在这种情况下,它可以生成适度或高度次优的查询计划.
SQL Server将(在大多数情况下)自动生成大多数表和索引的统计信息,但您可以补充这些或强制刷新.查询调优向导可能在查询中发现了一些缺少的统计信息或已识别的联接,应该添加统计信息.
优化程序使用统计信息来确定是否为查询使用特定索引.如果没有统计信息,优化器就无法知道有多少行与给定条件匹配,导致它必须针对"多行"情况进行优化,这可能不是最优的.