首批通过分布式安全可靠测评,为关键业务系统打造
查询语句中使用分隔符(SEPARATOR)导致执行慢的原因和解决方法
更新时间:2024-11-18 10:41
问题现象
查询语句中包含分隔符,SQL 执行慢。
示例如下。
原始 SQL 中关联的二张表(DocSecCategory,vars)没有连接条件。耗时 190s+ 。

对应的逻辑查询计划,走了 NESTED-LOOP JOIN 笛卡尔积,执行慢。

优化后,对包含分隔符的关联查询表,添加关联查询条件。

优化后的计划。

问题原因
查询语句中的表没有指定连接条件,会导致查询走笛卡尔积,从而产生大量的数据,执行慢。 笛卡尔积,即第一个表的每一行与另一个表的每一行进行组合输出,这通常会产生大量无用数据。
问题的风险及影响
未添加关联条件,SQL 执行慢。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V3.x、4.x 版本。
解决方法及规避方式
对查询涉及到的表添加关联条件。