统计信息为什么会影响执行计划?哪些情况需要收集直方图?

统计信息为什么会影响执行计划?哪些情况需要收集直方图?

优化器依赖统计信息估算行数、选择率和代价。如果统计信息缺失、过期或不准,优化器可能选错索引、选错 JOIN 顺序,甚至把本应走索引的查询误判为全表扫描更优。

常见需要关注统计信息的场景包括:

  • 表刚通过批量 INSERT、CTAS 导入大量数据;
  • 数据分布发生明显变化;
  • SQL 执行计划突然退化;
  • 优化器估算行数与实际行数偏差较大。

对于数据倾斜严重的列,例如状态列中某个值占比极高,仅收集普通统计信息不够,需要收集直方图。直方图能让优化器更准确估算不同值的选择率,从而避免把低频值和高频值当成同样分布。