
# 概述
自适应计划选择作用于使用通用缓存计划进行计划执行的场景。通过使用范围线性扩张进行缓存计划探索，通过范围覆盖匹配进行计划选择。自适应计划选择弥补了传统单一缓存计划无法根据查询条件参数进行变化带来的性能问题，并且避免了频繁调用查询优化。
PBE方式执行的情况下，GaussDB中的查询计划可能会有以下三种来源：
- 单个缓存计划（generic plan，简称gplan）：优势是避免了解析优化代价，缺点是无法实现感知条件参数，某些场景下计划效率可能降低，比如：当数据分布不均匀并且查询条件发生变化时，计划效率就会降低。
- 通过解析器优化器硬解析生成的计划（custom plan，简称cplan）：优势是能够根据统计信息和代价预测产生较优计划，缺点是计划生成时间消耗较多CPU资源。
- 多个缓存计划中选择的计划（adaptive plan，简称aplan）：优势是集合了gplan和cplan的优点于一身，能够高效选择较优执行计划，缺点是部分类型查询（比如子查询、复杂查询等）支持效果不佳。此计划为自适应计划选择特性新增的计划种类，需要开启该特性才会生成。
针对上述三种计划来源的优缺点，GaussDB ABO特性默认开启了自适应选择机制，通过对实际执行时间反馈的统计分析，从aplan、gplan及cplan中灵活且智能地选择当前最优的计划产生策略，使得整体性能最优。
