---
title: batch nlj 右表存在 limit 下压导致正确性问题-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于batch nlj 右表存在 limit 下压导致正确性问题相关的常见问题和使用技巧，帮助您快速解决batch nlj 右表存在 limit 下压导致正确性问题的难题。
---
切换语言

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

划线反馈

# batch nlj 右表存在 limit 下压导致正确性问题

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

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

## 问题现象

batch nlj 打开时查询结果不正确，示例如下（20 为错误结果）：

```shell
obclient> set _nlj_batching_enabled = 0;
Query OK, 0 rows affected

obclient> SELECT /*+ PARALLEL(2) leading(t23 view2) use_NL(VIEW2) SEMI_TO_INNER(view1)*/count(*) from t24 where exists (SELECT * FROM T24 T24_6144151 WHERE T24_6144151.C8 = T24.C8);
+----------+
| COUNT(*) |
+----------+
|    19978 |
+----------+

obclient> set _nlj_batching_enabled = 1;
Query OK, 0 rows affected

obclient> SELECT /*+ PARALLEL(2) leading(t23 view2) use_NL(VIEW2) SEMI_TO_INNER(view1)*/count(*) from t24 where exists (SELECT * FROM T24 T24_6144151 WHERE T24_6144151.C8 = T24.C8);
+----------+
| COUNT(*) |
+----------+
|       20 |
+----------+

```

## 关键诊断信息

### 触发条件

nlj 右支存在 limit 下压时走 batch。

## 问题原因

当前 SQL 执行不支持 nlj 右支存在 limit 下压时走 batch，需禁止。如下例：

```shell
obclient>explain SELECT /*+ PARALLEL(2) leading(t23 view2) use_NL(VIEW2) SEMI_TO_INNER(view1)*/count(*) from t24 where exists (SELECT * FROM T24 T24_6144151 WHERE T24_6144151.C8 = T24.C8);
***************************** 1.row *****************************
Query Plan: =====================================================
|ID|OPERATOR         |NAME|EST. ROWS|COST |
-------------------------------------------
|0 |SCALAR GROUP BY  |    |1        |936590|
|1 | NESTED-LOOP JOIN|    |19779    |935890|
|2 |  TABLE SCAN     |XY_T   |19978 |7747  |
|3 |  SUBPLAN SCAN   |VIEW2   |1    |46    |
|4 |   DISTRIBUTED TABLE SCAN|T24_6144151   |1    |46    |
==============================================================

Outputs & filters:
---------------------------------------------
  0 - output([T_FUN_COUNT(*)]),filter(nil),
     group(nil),agg_func([T_FUN_COUNT(*)])
  1 - output(nil),filter(nil),
     conds(nil),nl_params_([XY_T.CB])
  2 - output([XY_T.CB]),filter(nil),
     access([XY_T.CB]),partitions(p0)
  3 - output(nil),filter(nil),
     access([nil])
  4 - output(T24_6144151.CB),filter(nil),
     access([GROUP_ID],[T24_6144151.CB]),partitions(p0),
     limit(1),offset(nil)

```

## 问题的风险及影响

结果正确性问题。

## 影响租户

影响 OceanBase 数据库中的 Oracle 租户和 MySQL 租户，对于 SYS 租户无影响。

## 影响的版本

OceanBase 数据库 V2.2.77 GA（oceanbase-2.2.77-20210508211731）及之后版本、V3.1.2 GA（oceanbase-3.1.2-20210618150922）及之后版本、V3.2.3 GA（oceanbase-3.2.3.0-20220418212020）及之后版本、V3.2.4 GA（oceanbase-3.2.4.0-100000072022102819）及之后版本。

## 解决方法

- 升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V2.2.77 BP14（oceanbase-2.2.77-114000072022120410）及之后版本、V3.1.2 BP11（oceanbase-3.1.2-111000052023010412）及之后版本、V3.2.4 BP2（oceanbase-3.2.4.2-102000042023022717）及之后版本。
 - 关闭 batch nlj: `set _nlj_batching_enabled = 0;`。

## 规避方式

关闭 batch nlj: `set _nlj_batching_enabled = 0;`。

上一篇

[查询列包含 LOB 类型字段，USE_CONCAT 失效](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209973)

下一篇

[OceanBase 数据库报 timeout 或者直接 hang 住，报错 4012](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000089878) ![有帮助](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) 咨询热线
