多选题,下面会造成 SQL 执行计划频繁变更的因素有?()

下面会造成 SQL 执行计划频繁变更的因素有?()
A. 表数据量大幅度增减
B. 长期未收集统计信息
C. 频繁执行 ANALYZE TABLE
D. 索引新增或删除

1 个赞

@论坛小助手 帮忙看一下这一题

1 个赞

根据文档库中的信息,以下因素可以导致 SQL 执行计划的频繁变更:

  • A. 表数据量大幅度增减:随着业务数据写入或者变更,数据分布发生变化,在不同时间可能会生成不同的执行计划。多计划抖动 的场景中提到,数据分布的变化会导致优化器选择不同的执行计划。
  • B. 长期未收集统计信息:虽然文档没有直接说明长期未收集统计信息会造成执行计划频繁变更,但当重新收集表的统计信息时,相关的 SQL 在计划缓存中的执行计划会被刷新。如果长期不收集统计信息,则一旦收集可能导致执行计划变化。见计划缓存的刷新部分。
  • C. 频繁执行 ANALYZE TABLE:与选项 B 相关,执行 ANALYZE TABLE 更新了表的统计信息,使得基于这些信息生成的执行计划失效,并需要重新生成。因此,频繁执行该操作会导致执行计划频繁变更。同样参考计划缓存的刷新
  • D. 索引新增或删除:索引的添加或移除会直接影响可用的访问路径,从而影响执行计划的选择。执行计划缓存中指出,涉及表的Schema变更(如添加、删除索引)将导致相应的执行计划被刷新。

综上所述,以上四个选项都可能造成 SQL 执行计划频繁变更。因此正确答案是 A/B/C/D 全选。

更多信息请查看:

  1. SQL 查询导致的异常
  2. SQL 调优典型场景和案例
  3. 执行计划缓存
  4. SQL 执行计划简介
  5. 索引选择概述
  6. SQL 执行计划
  7. SQL 调优概览