---
title: OceanBase 数据库 V3.x 版本中全局索引回表不保证记录顺序与索引一致-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase 数据库 V3.x 版本中全局索引回表不保证记录顺序与索引一致相关的常见问题和使用技巧，帮助您快速解决OceanBase 数据库 V3.x 版本中全局索引回表不保证记录顺序与索引一致的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

划线反馈

# OceanBase 数据库 V3.x 版本中全局索引回表不保证记录顺序与索引一致

更新时间：2026-05-22 08:56

适用版本： V3.1.x、V3.2.x、V4.0.x、V4.1.x 内容类型：TechNote  

在 OceanBase 数据库 V4.2.3 版本之前，全局索引回表（分区表）不能保证记录顺序与全局索引一致。当查询需要对数据按照全局索引的键值进行排序时，全局索引回表的路径无法避免排序。

## 详细信息

分区表 tb_xx 上有全局索引在字段 gmt_modified 上，详细 DDL 如下所示。

```shell
CREATE TABLE `tb_xx` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ONUPDATECURRENT_TIMESTAMP COMMENT '修改时间',
    `data_version` bigint(20) NOT NULL DEFAULT '0' COMMENT '数据版本',
    `is_delete` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除，0-否，1-是',
    `promise_id` varchar(64) NOT NULL COMMENT '履约id',
    `order_id` varchar(64) NOT NULL COMMENT '订单id',
    `consumer_id` varchar(64) NOT NULL COMMENT '主体id，比如店铺id',
    `sku_id` varchar(64) NOT NULL COMMENT '产品skuId',
    `spu_id` varchar(64) NOT NULL COMMENT '产品spuId',
    `buy_id` varchar(64) NOT NULL COMMENT '购买人id:比如店铺ownerId，amap_uid',
    `is_reverse` int(10) NOT NULL DEFAULT '1' COMMENT '1:正向；2:逆向',
    KEY `idx_gmt_modified` (`gmt_modified`) BLOCK_SIZE 16384 GLOBAL,
    KEY `uk_promise_id` (`promise_id`) BLOCK_SIZE 16384 LOCAL
) AUTO_INCREMENT = 2890001 DEFAULT CHARSET = utf8mb4 partition by key(promise_id)(
 partition p0,
  partition p1,
  partition p2,
  partition p3,
  ............
  partition p63);

```

如下 SQL 查询 tb_xx 表，从中获取按照 gmt_modified 字段排序的前 10 条记录，explain 显示执行计划为全表扫描+排序，不使用全局索引 idx_gmt_modified。

```shell
MySQL > explain SELECT * FROM tb_xx WHERE 1=1 ORDER BY gmt_modified desc limit 0,10;

```

输出内容如下:

```shell
| Query Plan
| ==========================================================
|ID|OPERATOR                   |NAME    |EST. ROWS|COST  |
----------------------------------------------------------
|0 |LIMIT                      |        |10       |481641|
|1 | PX COORDINATOR MERGE SORT |        |10       |481641|
|2 |  EXCHANGE OUT DISTR       |:EX10000|10       |481627|
|3 |   LIMIT                   |        |10       |481627|
|4 |    TOP-N SORT             |        |10       |481627|
|5 |     PX PARTITION ITERATOR |        |875052   |346132|
|6 |      TABLE SCAN           |tb_xx   |875052   |346132|
==========================================================

```

如果使用全局索引 `idx_gmt_modified`，还需要回表，回表后不能保证结果按照 `gmt_modified desc` 排序，还需要额外的 Sort 处理。OceanBase 在计算执行计划代价时，发现使用全局索引回表 + Sort 的代价比直接使用 `Table Scan + Sort` 的代价还高，因此优化器选择了 Table Scan 。

## 适用版本

OceanBase 数据库 V4.2.3 之前版本。

上一篇

[如何计算索引创建使用的临时空间大小](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000568556)

下一篇

[OceanBase 数据库 V4.x 版本因表索引过多导致查询物理执行计划报错 -4016 的原因及处理方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001843059) ![有帮助](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) 咨询热线
