基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
OceanBase 数据库 V2.X 版本不兼容 Oracle 的索引类型及其替代方式
更新时间:2026-05-22 08:56
本文主要介绍 OceanBase 数据库 V2.X 版本不兼容 Oracle 的索引类型及其替代方式。
逆序索引
逆序索引是为了减少 INSERT 时的索引热点块问题。Oracle 数据库是在存储层通过逆转索引中 key 的值存储的。
OceanBase 数据库不支持逆序索引,但可以通过创建 Hash 分区索引的方式,避免出现索引的热点块。另外,也可以通过生成分布式 ID 生成方式将主键分散。
降序索引
降序索引用于解决某些查询降序扫描的性能问题。Oracle 数据库中通过函数索引来实现,即并不是以降序存储 key 值。
OceanBase 数据库不支持降序索引,但在路径选择时,会根据索引上的插入顺序,采用逆序扫描的方式复用正序索引。
位图索引
位图索引适合在枚举类型的属性上创建,索引块的一个索引行中存储的是键值(以比特位 0、1 的形式存储)和起止 ROWID,采用 bit compare 大幅加速多属性过滤的普通查询和聚合查询。
OceanBase 数据库不支持位图索引。
全文索引
全文索引用于全文检索。Oracle 使用专有的分词库统计 term 出现的位置、次数和哈希值。
OceanBase 数据库不支持全文索引,但可以通过以下方式替代。
使用标准的 INSTR 函数。
obclient> SELECT *FROM mytext WHERE INSTR (thetext, 'Oracle') > 0;使用标准的 LIKE 操作符。
obclient> SELECT * FROM mytext WHERE thetext LIKE '%Oracle%';在文本上建立索引,然后重写查询,使用索引全扫描加索引回表操作。
obclient> SELECT * FROM mytext WHERE thetext IN (SELECT thetext FROM mytext WHERE thetext LIKE '%TABCOL%');