---
title: 专有云生产环境范围查询结果集错误及 Query Range 抽取问题分析与解决-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 专有云生产环境范围查询结果集错误及 Query Range 抽取问题分析与解决相关的常见问题和使用技巧，帮助您快速解决 专有云生产环境范围查询结果集错误及 Query Range 抽取问题分析与解决的难题。
---
切换语言

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

划线反馈

# 专有云生产环境范围查询结果集错误及 Query Range 抽取问题分析与解决

更新时间：2026-05-14 09:21

适用版本： V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x、V4.3.x、V4.4.x 内容类型：Troubleshoot  

## 问题现象

在 OceanBase 数据库中，当执行带有范围查询条件的 SQL 语句时，结果集中缺失了特定日期的第一天的数据，而后续日期的数据则是正确的。例如，对于日期范围 1 月 1 日至 1 月 2 日的查询，1 月 1 日的数据未能正确返回，但 1 月 2 日的数据却能正常显示。

```shell
SELECT * FROM table_name WHERE A.D_BIZ BETWEEN '2023-01-01' AND '2023-01-02' AND (A.C_PA_CODE = 'LXSR_ZQ' OR (A.C_PA_CODE = 'TZSY_ZZS_CD' AND A.C_PI_CODE = 'ZZS_XX_LX'));

```

## 关键诊断信息

### 触发条件

- 存在复合索引`（c1, c2, c3）`。
 - 过滤条件为 `c1 BETWEEN 1 AND 2 AND (c2 = 1 OR (c2 = 2 AND c3 = 3))`。
 - 索引列 `c1, c2` 之间可以有其他列，且这些列上存在等值谓词。

### 事前巡检

- 检查涉及范围查询的 SQL 语句，特别是那些使用了复合索引并且过滤条件中包含了 `BETWEEN` 和 `OR` 组合的 SQL。
 - 审核索引设计，确保索引列的顺序不会导致 Query Range 抽取错误。

### 事后诊断

- 对比范围查询和等值查询的结果集，检查是否存在特定日期的数据缺失。
 - 查看 SQL 执行计划，确认 Query Range 的抽取是否符合预期。

## 问题原因

旧版 Query Range 抽取的逻辑存在缺陷，在合并 Range Node 时处理不当，导致在过滤条件满足特定场景时，抽取的 Range 出现错误。这使得某些本应被查询出来的记录未能出现在结果集中，从而影响了 SQL 查询的正确性。

## 问题的风险及影响

SQL 结果可能错误，特别是在执行带有范围查询条件的 SQL 语句时，可能导致数据缺失，进而影响业务逻辑的准确性。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。

## 影响版本

OceanBase 数据库 V2.2.77 GA（oceanbase-2.2.77-20210508211731）及之后版本、V3.1.2 GA（oceanbase-3.1.2-20210618150922）及之后版本、V3.2.2 GA（oceanbase-3.2.2-20211130225726）及之后版本、V3.2.3 GA（oceanbase-3.2.3.0-20220419）及之后版本、V3.2.4 GA（oceanbase-3.2.4.0-100000072022102819）及之后版本、V4.1.0 GA（oceanbase-4.1.0.0-100001122023040322）及之后版本、V4.2.0 GA（oceanbase-4.2.0.0-100010082023083014）及之后版本、V4.2.1 GA（oceanbase-4.2.1.0-100000182023092722）及之后版本、V4.2.2 GA（oceanbase-4.2.2.0-100000082024011317）及之后版本、V4.2.5 GA（oceanbase-4.2.5.0-100000082024102022）及之后版本、V4.3.0（oceanbase-4.3.0.0-100000072024020200）及之后版本、V4.4.0（oceanbase-4.4.0.0-100000562025070723）及之后版本。

## 解决方法

- 升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V4.2.2（oceanbase-4.2.2.0-100000082024011317）及之后的版本，使用新版 Query Range 逻辑避免此问题。
 - 通过 Hint 绑定其他索引来应急处理。

## 规避方式

- 修改索引中列的顺序，确保在过滤条件中使用 `BETWEEN` 和 `OR` 组合时，Query Range 能够正确抽取。
 - 在不影响业务的前提下，考虑将范围查询条件改为等值查询条件，以规避此问题。

上一篇

[OceanBase 数据库 V3.x 版本中对于 SQL 的 Group By 上拉改写，在遇到聚合函数中存在相关子查询的场景下，计划生成阶段报错 -4000](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002309397)

下一篇

[OceanBase 数据库 V4.x 集群在执行 CONNECT BY + ORDER SIBLINGS BY 递归查询语句时出现 -4016 left and right output size not same](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003793698) ![有帮助](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) 咨询热线
