什么时候创建统计信息?

时间:2019-01-29 10:15:22

标签: performance database-design

在SQL Server中,何时仅在表列而不是索引上创建统计信息,以及何时创建索引(也会自动创建统计信息)?

2 个答案:

答案 0 :(得分:0)

根据documentation,当自动创建统计信息选项为AUTO_CREATE_STATISTICSON时:

  

查询优化器在查询中的单个列上创建统计信息   谓词,必要时改进查询计划和查询   性能。这些单列统计信息是在查询时创建的   优化器会编译查询。

因此,至少在以下情况下,您需要手动创建统计信息:

  • AUTO_CREATE_STATISTICSOFF
  • 需要多列统计信息
  • 需要过滤统计信息

索引和统计数据不可比。通常,索引比表扫描更有效地访问数据。优化程序需要统计信息才能估计返回的行数。

答案 1 :(得分:0)

当仅向SQL引擎告知数据的分布/基数模式可以帮助它设计更好的执行计划时,统计信息非常有用,其中在告诉数据模式不足和特殊的数据访问结构(即b -tree),以减少数据扫描和滚动。