功能描述
optimizer_switch用于设置优化器指示选项开关。属性说明
属性 | 说明 |
参数类型 | FLAGSET |
默认值 | index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=off,block_nested_loop=on,batched_key_access=on,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=on,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=on,derived_merge=on,use_invisible_indexes=off,skip_scan=off,hash_join=on,subquery_to_derived=off,prefer_ordering_index=off,hypergraph_optimizer=off,derived_condition_pushdown=on,favor_range_scan=off,lazy_index_strategy=off,limit_cond_pushdown=on,pk_preload_pushdown=on,force_batched_key_access=on |
取值范围 | index_merge:设置为 on 或 off,启用或禁用索引合并优化。index_merge_union:设置为 on 或 off,启用或禁用索引合并中的 UNION 优化。index_merge_sort_union:设置为 on 或 off,启用或禁用索引合并中的排序 UNION 优化。index_merge_intersection:设置为 on 或 off,启用或禁用索引合并中的交集优化。engine_condition_pushdown:设置为 on 或 off,启用或禁用存储引擎条件下推优化。index_condition_pushdown:设置为 on 或 off,启用或禁用索引条件下推优化。mrr:设置为 on 或 off,启用或禁用多范围读取优化。mrr_cost_based:设置为 on 或 off,启用或禁用基于成本的多范围读取优化。block_nested_loop:设置为 on 或 off,启用或禁用块嵌套循环连接优化。batched_key_access:设置为 on 或 off,启用或禁用批量键访问优化。materialization:设置为 on 或 off,启用或禁用物化子查询优化。semijoin:设置为 on 或 off,启用或禁用半连接优化。loosescan:设置为 on 或 off,启用或禁用松散扫描优化。firstmatch:设置为 on 或 off,启用或禁用第一个匹配优化。duplicateweedout:设置为 on 或 off,启用或禁用重复剔除优化。subquery_materialization_cost_based:设置为 on 或 off,启用或禁用基于成本的子查询物化优化。use_index_extensions:设置为 on 或 off,启用或禁用索引扩展优化。condition_fanout_filter:设置为 on 或 off,启用或禁用条件扇出过滤优化。该优化用于减少在多表连接时的中间结果集大小,从而提高查询性能。derived_merge:设置为 on 或 off,启用或禁用派生表合并优化。派生表合并优化会将派生表(子查询)合并到外部查询中,从而避免创建临时表。use_invisible_indexes:设置为 on 或 off,启用或禁用使用不可见索引。不可见索引在查询优化器中被忽略,但仍然存在于表中。禁用该选项可以确保查询优化器不会使用这些索引。skip_scan:设置为 on 或 off,启用或禁用跳过扫描优化。跳过扫描优化允许在索引扫描时跳过不必要的行,从而提高查询性能。hash_join:设置为 on 或 off,启用或禁用哈希连接优化。哈希连接适用于等值连接,通过哈希表加速连接操作,通常在大表连接或无索引场景下性能更优。subquery_to_derived:设置为 on 或 off,启用或禁用子查询转换为派生表优化。该优化将某些子查询转换为派生表,使其能够参与更高效的连接和优化策略。prefer_ordering_index:设置为 on 或 off,启用或禁用优先使用排序索引优化。当查询包含 ORDER BY 子句时,优化器会优先考虑使用索引来避免排序操作。hypergraph_optimizer:设置为 on 或 off,启用或禁用超图优化器。超图优化器是 MySQL 8.0.22 引入的实验性优化器,用于处理更复杂的多表连接查询计划。derived_condition_pushdown:设置为 on 或 off,启用或禁用派生表条件下推优化。该优化将外部查询条件下推到派生表中,提前过滤数据以减少派生表的数据量。favor_range_scan:设置为 on 或 off,启用或禁用优先范围扫描优化。该优化会倾向于使用范围扫描而非全表扫描,即使范围扫描的成本估算略高,以提升查询稳定性。lazy_index_strategy:设置为 on 或 off,启用或禁用懒惰索引策略。懒惰索引策略会延迟索引的使用,直到确定索引确实有助于查询性能。limit_cond_pushdown:设置为 on 或 off,启用或禁用 LIMIT 条件下推优化。该优化会将 LIMIT 条件下推到子查询或视图中,从而减少处理的数据量,提高查询性能。pk_preload_pushdown:设置为 on 或 off,启用或禁用主键预加载下推优化。该优化将主键预加载操作下推到存储引擎层,减少回表次数,提升主键查询性能。force_batched_key_access:设置为 on 或 off,将带索引的连接都转成 batch rpc 的 bka 连接,减小 RPC 的数据量,提升性能。cost_based_hashjoin:设置为 on 或 off,是否将 hashjoin 的代价计算纳入到整体代价模型的计算中。 |
生效范围 | GLOBAL SESSION |
是否重启生效 | 否 |