关于全局索引与局部索引在 OceanBase 分区表中的使用策略,以下说法正确的是?

关于全局索引与局部索引在 OceanBase 分区表中的使用策略,以下说法正确的是?
单选题
A. 全局索引的分区方式必须与基表的分区方式完全相同,否则无法建立全局索引。

B. 对于点查询场景(WHERE 条件包含分区键),使用局部索引比全局索引性能更好,因为可以避免跨节点查询。

C. 全局唯一索引要求索引键必须包含基表的所有分区键,否则无法保证全局唯一性。

D. 在分区表上进行范围扫描且查询条件不包含分区键时,局部索引比全局索引更高效,因为局部索引的数据量更小。

1 个赞

解析
全局唯一索引需要在整个表范围内保证索引键的唯一性。如果索引键不包含全部分区键,那么在不同分区中可能出现相同的索引键值,系统无法在不扫描所有分区的前提下判断唯一性。因此 OceanBase 要求全局唯一索引必须包含基表的所有分区键

  • A 错误 :全局索引可以采用与基表不同的分区方式 ,例如基表按 hash(id) 分区,全局索引可按 range(create_time) 分区。这也是全局索引的主要价值之一。
  • B 错误 :点查询如果包含分区键,局部索引确实可以直接定位到目标分区,性能通常很好。但不能说“全局索引性能更差” ,因为优化器可以选择下推查询,同样的点查询在全局索引上也只需访问一个分区(如果索引分区方式合理);性能优劣取决于具体数据分布与查询模式,不能一概而论。
  • C 正确 :全局唯一索引强制要求索引键包含基表所有分区键,这是 OceanBase 的限制,目的是确保唯一性校验能够在单分区内完成。
  • D 错误 :当查询条件不包含分区键 时,局部索引无法确定目标分区,需要在所有分区 上分别扫描索引(分区剪枝失效)。这正是全局索引发挥作用的场景——全局索引可以提供独立的分区方式,减少需要扫描的分区数量。所以这题中 D 的结论反了:分区键缺失时,全局索引通常比局部索引更高效。

正确答案:C

选择B
B 正确:当点查询条件包含分区键时,局部索引可以直接定位到目标分区,避免跨节点查询;而全局索引需要先查索引表再回表,多一次跨节点交互,因此局部索引性能更好。