一张表 userid(不唯一)、uuid(唯一),经常要查表格存储userid的数据主键顺序选什么?

一张表有 userid(不唯一)、uuid(唯一),但经常要查表格存储userid的数据,那么,主键顺序是userid+uuid,还是uuid+userid?

展开
收起
鸡蛋灌饼儿 2023-02-06 16:18:09 480 发布于吉林 分享
分享
版权
举报
4 条回答
写回答
取消 提交回答
  • 如果经常要查询表格存储中 userid 的数据,那么最佳的主键顺序是 userid+uuid

    原因:

    • 主键范围:主键范围(主键的前缀)用于确定存储数据的分区。使用 userid 作为主键范围将确保所有具有相同 userid 的数据都存储在同一个分区中。
    • 查询效率:范围查询(例如,获取特定用户的所有记录)将从 userid 主键范围开始。通过将 userid 放在主键顺序的第一位,可以提高范围查询的效率。

    示例:

    假设有一张表名为 users,其中包含以下列:

    • userid(字符串,不唯一)
    • uuid(UUID,唯一)

    如果主键顺序为 userid+uuid,则将数据存储在分区中的方式如下:

    分区 1:
        - userid: user1
            - uuid: uuid1
            - uuid2
        - userid: user2
            - uuid3
    分区 2:
        - userid: user3
            - uuid4
            - uuid5
        - userid: user4
            - uuid6
    

    要获取所有具有 useriduser1 的记录,只需执行范围查询:

    SELECT * FROM users WHERE userid = 'user1'
    

    此查询将只扫描分区 1,从而提高查询效率。

    注意事项:

    • 如果主键顺序为 uuid+userid,则范围查询将扫描所有分区,这可能会降低查询效率。
    • 确保主键中的所有列都已编制索引,以获得最佳查询性能。
    2024-02-27 18:25:40 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
  • userid+uuid,因为uuid是唯一的,可以保证查询的准确性,而userid不是唯一的,可能会查询到多条数据。

    2023-02-06 19:15:16 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
  • 建议userid+uuid 如果uuid作为分区键 可能会造成热点——该回答整理自钉群“表格存储技术交流群-2”

    2023-02-06 18:09:35 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
  • 公众号:java实用技术手册,阿里云专家博主。专注支付和交易架构技术。

    主键userid+uuid,可以命中userid。当然你也可以单独把userid设为索引。希望对您有帮助。

    2023-02-06 16:41:23 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论

阿里云存储基于飞天盘古2.0分布式存储系统,产品多种多样,充分满足用户数据存储和迁移上云需求。

收录在圈子:
+ 订阅
阿里云存储基于飞天盘古2.0分布式存储系统,产品包括对象存储OSS、块存储Block Storage、共享文件存储NAS、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。
还有其他疑问?
咨询AI助理
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等