问题描述
在 OceanBase 数据库中,执行一个查询语句,在不开启并行执行时,执行时间为 0.2 秒,但是开启并行执行后,执行时间需要 3 秒。
示例:
两类问题开并行走了 NLJ 的 px rescan 性能差。

并行场景下 order by 执行不如非并行速度快。
非并行:order by 列 cust_id 是索引列,order by 被消除所以执行快。计划中没有了 order by 算子。

并行引入有 px merge sort,所以排序变慢了。

适用版本
OceanBase 数据库 V3.1.2 BP8 Hotfix (oceanbase-3.1.2-20220511135649) 版本实测存在本问题;理论上 OceanBase 数据库 V3.1.x、V3.2.x 版本均会存在该问题。
问题原因
在索引列上进行 order by 操作可能会导致查询变慢,而且开启并行执行会进一步增加执行时间。
解决方法
关闭并行执行:在查询语句中不使用 parallel(x) hint 来开启并行执行。