【多选题】适合采用全局索引的业务场景包含?()
A. 查询条件不带分区键,需要快速定位单行数据
B. 分区键字段极少更新,查询跨多个分区
C. 表分区数量庞大,几乎所有查询都携带分区键
D. 需要全局唯一性约束,无法使用本地唯一索引
正确答案是:A、D
详细解析:
在 OceanBase 分布式数据库中,全局索引(Global Index)与主表的分区信息相互独立。它主要用于弥补局部索引(Local Index)在跨分区查询和全局唯一性约束上的不足。
-
选项 A (查询条件不带分区键,需要快速定位单行数据) 正确 :
对于不包含分区键的查询,如果使用局部索引,数据库需要在所有分区中进行全分区扫描,效率极低。而全局索引覆盖了整个表的数据,可以直接查找到目标数据,无需跨分区扫描,能够显著减少 I/O 操作并加快查询速度,非常适合高频且精准命中单行记录的场景12。 -
选项 B (分区键字段极少更新,查询跨多个分区) 错误 :
全局索引在数据更新(DML)操作中会引入额外的维护成本,尤其是可能引发跨机器的分布式事务,增加系统开销13。因此,对于写入频繁或更新操作较多的表,应慎重使用全局索引。此外,如果查询跨多个分区,全局索引的回表操作也会产生大量 RPC 调用,导致 RT(响应时间)过高。 -
选项 C (表分区数量庞大,几乎所有查询都携带分区键) 错误 :
当查询条件中包含完整的分区键时,局部索引能够直接定位到对应的分区,查询效率最高,且维护成本远低于全局索引13。在这种场景下,应优先使用局部索引。 -
选项 D (需要全局唯一性约束,无法使用本地唯一索引) 正确 :
局部索引只能保证分区内部的唯一性。如果业务上需要在非主键、非分区键的字段上建立唯一约束,局部索引无法实现(除非将分区键也加入索引列,但这会增加冗余并改变查询条件)。此时,必须使用全局唯一索引来保证键值的全局唯一性23。
A
D