---
title: 使用并行执行 group by 查询结果中出现重复行-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于使用并行执行 group by 查询结果中出现重复行相关的常见问题和使用技巧，帮助您快速解决使用并行执行 group by 查询结果中出现重复行的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

划线反馈

# 使用并行执行 group by 查询结果中出现重复行

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

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

## 问题现象

在使用并行执行 group by c1 查询结果中出现了重复的 c1 值。

## 关键诊断信息

### 触发条件

1. 查询一张 range 分区表。、
 2. 表上建了 local 索引。
 3. group by 索引键，利用上索引的序，也就是生成了 merge group by 算子。
 4. 并行度大于 1，并且生成的是 `granule block iterator` 而不是 `granule partition iterator`。

## 问题原因

原因是原来并行查询 range 分区只能说出 `granule partition iterator`，以分区为单位划分任务，在并行度大于分区数时，大量 PX 线程分不到任务。后来做了优化，允许生成 `granule block iterator`，这要求一个分区内划分的多个 block 是要有序的。 `granule block iterator` 利用 query range 生成总的任务，然后切分成若干个任务，如果 query range 不是有序的，那么任务就不是有序的，最终输出结果也不是有序的，那么上层 merge group by 的结果中就会出现重复值。

## 问题的风险及影响

出现正确性问题。

## 影响租户

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

## 影响版本

OceanBase 数据库 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）及之后版本。

## 解决方法

- 修改并行度为 1。
 - 使用 `hint` 指定走 `hash` 而不是 `merge group by`。
 - 改表结构，不用 `range` 分区。

## 规避方式

在插入 `range` 分区时，设置并行度为 1。

上一篇

[SQL 语句过滤条件里存在非同一字段判断条件超过 64 个报错 -4002](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000450149)

下一篇

[同结构分区表 join 时 merge group by 算子导致的正确性问题](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000089874) ![有帮助](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) 咨询热线
