V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jwh199588
V2EX  ›  程序员

寻求一个好的方案

  •  
  •   jwh199588 · 326 天前 · 1772 次点击
    这是一个创建于 326 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在有两张表
    ```mysql
    表 1: 用户表 2W 条数据
    手机号
    姓名

    表 2: 休假表 10W 数据(一直增长中)
    申请人(手机号)
    交接人(手机号)
    ```
    现在呢,导出休假表全量数据的时候,需要获取到申请人和交接人的姓名,导出格式如下
    `申请人 申请人姓名 交接人 交接人姓名`

    目前我想到两种方案:
    第一种:每获取休假表 1000 条数据,然后去用户表获取对应手机号的的姓名
    第二种:使用 mysql ,用休假表的申请人关联用户表,在用休假表的交接人关联用户表,意思就是连续关联两次休假表

    但是我觉得这两种方案都不怎么好,请问大家还有其他好的方案吗
    14 条回复    2023-05-08 15:25:28 +08:00
    renmu
        1
    renmu  
       326 天前 via Android
    就这点数据直接都拿出来放到内存处理应该也没啥问题,全量导出也不是啥频繁操作的东西
    iOCZ
        2
    iOCZ  
       326 天前
    联表查询不是一般操作么?
    aru
        3
    aru  
       326 天前
    直接 join 就行了,有性能问题再说
    yinmin
        4
    yinmin  
       326 天前 via iPhone
    2 次 join 是正解。
    taotaodaddy
        5
    taotaodaddy  
       325 天前
    join
    oneisall8955
        6
    oneisall8955  
       325 天前 via Android
    做好覆盖索引(手机号+姓名),不回表,这点数据量没问题
    qIssac
        7
    qIssac  
       325 天前
    这数据量太小了,mysql 两次 join 一点问题没有
    ql562482472
        8
    ql562482472  
       325 天前
    内存处理 这点东西。。
    xwayway
        9
    xwayway  
       325 天前 via iPhone
    这点数据量,直接 join 不会有任何问题……
    xuanbg
        10
    xuanbg  
       325 天前
    就这点数据还不直接 join 么?而且你这个 join 都不会产生笛卡尔积的,怕什么。
    ashe900501
        11
    ashe900501  
       325 天前
    把用户表全部读入到内存,然后轮询休假表?个人想法。
    azui999
        12
    azui999  
       325 天前
    就这点东西,量级再乘以 100,单机也足够操作
    humbass
        13
    humbass  
       325 天前
    又不是几个亿的数据,速度没要求直接 join ,有要求的话通过 redis 处理
    jwh199588
        14
    jwh199588  
    OP
       325 天前
    这个任务的数据量确实不大,我只是想通过这个做一个延伸,如果在后面遇到了大数据量,该如何处理
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3921 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:26 · PVG 18:26 · LAX 03:26 · JFK 06:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.