---
title: 优化器主动抽取 CTE 导致执行计划走偏，查询语句超时-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于优化器主动抽取 CTE 导致执行计划走偏，查询语句超时相关的常见问题和使用技巧，帮助您快速解决优化器主动抽取 CTE 导致执行计划走偏，查询语句超时的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 优化器主动抽取 CTE 导致执行计划走偏，查询语句超时

更新时间：2026-05-26 09:46

适用版本： V3.1.x、V3.2.x 内容类型：Troubleshoot  

## 适用版本

OceanBase 数据库 V3.x 版本。

## 问题现象

如下查询语句在 OceanBase 数据库 V3.x 版本执行超时，在 V2.2.77 版本正常执行。

```shell
SELECT * FROM (
    SELECT * FROM WF_H_PROCESSINST
    UNION ALL
    SELECT * FROM WFPROCESSINST
) START WITH PROCESSINSTID = xxx
CONNECT BY PRIOR PARENTPROCID = PROCESSINSTID
ORDER BY LEVEL DESC;

```

V3.x 版本执行计划：

![Alt text](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/71d10469-91fd-47f7-bb39-b59009447bfa.png)

V2.2.77 版本执行计划：

![Alt text](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/756c25f9-86af-461a-98e2-f9e97acda2c3.png)

## 问题原因

通过执行计划可以看到 V3.x 版本上引入了 TEMP TABLE TRANSFORMATION 算子，主要是因为控制优化器主动抽取 CTE 子句，导致执行计划发生变化，查询 SQL 命中了此优化场景的 bad case。

## 解决方法

方法一：在查询语句中添加 Hint，示例通过绑定 outline 解决。

```
SELECT /*+no_rewrite*/ * FROM (
    SELECT * FROM WF_H_PROCESSINST
    UNION ALL
    SELECT * FROM WFPROCESSINST
) START WITH PROCESSINSTID = xxx
CONNECT BY PRIOR PARENTPROCID = PROCESSINSTID
ORDER BY LEVEL DESC;

```

方法二：OceanBase 数据库 V3.2.3 BP9 及之后版本，通过关闭租户隐藏参数 `_xsolapi_generate_with_clause` 关闭 CTE 抽取优化。

```shell
obclient> alter system set "_xsolapi_generate_with_clause"=0;

```

上一篇

[自定义函数在查询条件右侧时，不走索引](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000246017)

下一篇

[Oracle 模式下执行 SQL 报 4016](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000791257) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
