开发者社区> 问答> 正文

为什么在OceanBase数据库中,即使user_id是主键,仍然会访问主键呢?

为什么在OceanBase数据库中,即使user_id是主键,仍然会访问主键呢?我看到执行计划中的执行算子,没有access描述,这是什么意思呢?image.png

展开
收起
真的很搞笑 2024-01-02 19:28:00 44 0
来自:OceanBase
3 条回答
写回答
取消 提交回答
  • 在OceanBase数据库中,即使user_id是主键,也不代表不会访问主键。主键的存在主要是为了确保表中的每一行数据可以被唯一确定,并且不存在重复的数据行。当我们进行查询操作时,往往需要通过某些条件来定位到具体的数据行,这些条件往往会涉及到主键。例如,当我们需要查询某个特定的user_id对应的数据时,就需要通过user_id这个主键来进行定位。因此,即使在执行计划中的执行算子没有access描述,实际上在执行过程中仍然会访问主键。

    2024-01-03 10:33:22
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在OceanBase数据库中,主键是能够唯一标识一行的列的集合。主键的存在可以帮助系统快速定位到数据行,因为它会自动为主键列创建一个全局唯一索引。当您查询数据时,即使主键作为查询条件,执行计划中的执行算子也可能出现没有access描述的情况。这是因为在某些优化模式下,如STREAM模式或FAST模式,引擎可能会选择不访问表中的主键。因此,即使主键被用作查询条件,也不意味着一定会访问主键。

    此外,OceanBase数据库支持主键表和无主键表。对于无主键表,由于没有全局索引,通常使用ROWID来快速定位到行。而无主键表在OceanBase数据库中采用自增列作为隐藏主键。

    2024-01-02 22:29:33
    赞同 展开评论 打赏
  • 可以看下这个 https://blog.csdn.net/OceanBaseGFBK/article/details/118304764 ,此回答整理自钉群“[社区]技术答疑群OceanBase”

    2024-01-02 21:40:18
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
蚂蚁OceanBase数据库团队,用于OceanBase技术原理、运维经验和案例分享、对外交流。
问答排行榜
最热
最新

相关电子书

更多
开源HTAP OceanBase产品揭秘 立即下载
云数据库OceanBase 架构演进及在金融核心系统中的实践 立即下载
自研金融数据库OceanBase的创新之路 立即下载