2023-06-27 mysql-optimizer_switch参数derived_merge-分析

本文分析了MySQL的optimizer_switch参数derived_merge在处理派生表时的作用,探讨了该参数对查询优化,特别是多表连接的影响。当derived_merge关闭时,派生表会被物化为临时表,而开启时则会尝试合并到外层查询。实验展示了derived_merge开启和关闭对查询执行计划的不同,并提示设置该参数需退出并重新进入MySQL终端方能生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:

在分析包含内连接的嵌套外连接的过程中, 发现optimizer_switch参数derived_merge控制多个表连接是否使用派生表, 本文对其做分析.

派生表:

派生表即为from子句出现的查询结果集当做一张表,或者from后面是一个视图, 或者是在多表连接过程中。优化器在处理derived table时有两种策略,第一种是将derived table合并到外层查询中,第二种是将derived table物化为一个临时表。优化器开关derived_merge控制选择哪种策略,如果设置为on,则是选择策略1,如果设置为off,则是选择策略2。此开关从5.7.6版本引入,默认值为on。

optimizer_switch控制

参数分类:

index_merge=on,
index_merge_union=on,
index_merge_sort_union=on,
index_merge_intersection=on,
engine_condition_pushdown=on,
index_condition_pushdown=on,
use_index_extensions=on,

mrr=on,
mrr_cost_based=on,

blo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值