【OceanBase 诊断调优】—— SQL 查询触发笛卡尔积怎么处理

问题现象

业务从 MySQL 迁移至 OceanBase 数据库 V4.3.5 BP2 版本 MySQL 模式下,SQL 查询不出结果,用 EXPLAIN EXTENDED 命令展示执行计划信息。

image01

输出返回结果如下:

image02

由上执行计划信息可知存在笛卡尔积。

问题原因

默认的计划不优原因是优化器默认把子查询延后计划,导致先做笛卡尔积的数据量非常大。

适用版本

OceanBase 数据库 V4.x 版本。

解决方法

OceanBase 数据库 V4.3.5 BP2 版本已优化的一个功能,优化之后这个场景也是需要通过 Hint 干预计划的,目前只在有限的场景做了自动下压。

在子查询内加 Hint /*+PUSH_SUBQ*/

image03

添加完 Hint 以后的执行计划输出返回结果如下:

image04

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值