V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
loveyu
V2EX  ›  问与答

在数据库中查询用户关联的信息是连表还是单独查询

  •  
  •   loveyu · 2015-07-18 08:40:54 +08:00 · 2632 次点击
    这是一个创建于 3450 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如有用户表
    user_id, user_name, ......

    事件表
    ev_id, user_id, ev_info, ev_time, .......

    这里查询了事件表的信息,某些情况下需要返回user_name字段,是将事件表查出来之后利用user_id集合单独将user_name查询出来,还是直接利用inner join。

    各位都是怎么做的,假设用户表在10万左右,事件表在100万左右。

    12 条回复    2015-07-18 18:59:20 +08:00
    Septembers
        1
    Septembers  
       2015-07-18 08:47:38 +08:00
    当然是inner join
    (如果用的MySQL的话请 真爱生命,远离MySQL
    (另外100万规模还好意思说?
    loveyu
        2
    loveyu  
    OP
       2015-07-18 09:00:37 +08:00
    @Septembers 真是mysql,只是现在够用。100万只是个假设的数字,唉
    publicID001
        3
    publicID001  
       2015-07-18 09:08:27 +08:00   ❤️ 1
    没钱玩:PostgreSQL
    有钱玩:Oracle Database
    做死玩:MySQL
    MrJing1992
        4
    MrJing1992  
       2015-07-18 09:19:24 +08:00 via iPhone   ❤️ 2
    用explan看看,建议单独查。用连表确实是一条语句搞定,当时连表越多意味着扫描表时IO开销越大。数据量小且有索引时,问题不大。单独查时,in里面的数据一般不会放很多,而且还是索引字段,所以性能也还好。后期可以把user_name什么的缓存着,毕竟用户表几乎都要查它,而且它变化的频率很低。所以建议单独查,后期用户时改动会小一下。
    loveyu
        5
    loveyu  
    OP
       2015-07-18 09:23:38 +08:00
    @publicID001 好建议,转PostgreSQL中
    leyle
        6
    leyle  
       2015-07-18 11:53:24 +08:00
    v2ex 是 MySQL 吧?
    powergx
        7
    powergx  
       2015-07-18 12:30:14 +08:00 via iPhone   ❤️ 1
    postgresql+redis
    kslr
        8
    kslr  
       2015-07-18 14:49:18 +08:00 via Android
    瞎折腾,MySQL我跑了七八亿好好的
    iyaozhen
        9
    iyaozhen  
       2015-07-18 15:27:48 +08:00
    为什么 mysql 不行呀?用的感觉好好的呀。
    loveyu
        10
    loveyu  
    OP
       2015-07-18 17:41:37 +08:00
    @iyaozhen 没人说不行,只是一部分场合不合适,导致一些人不喜欢而已
    gdtv
        11
    gdtv  
       2015-07-18 17:46:33 +08:00
    @Septembers
    @publicID001
    请问像楼主这样的数据量和查询要求,如果用一条inner join语句,PostgreSQL、Oracle Database、MySQL的效率差多少?
    谢谢。
    bitzhuxb
        12
    bitzhuxb  
       2015-07-18 18:59:20 +08:00
    如果userid有索引,inner join毫无问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3606 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 04:28 · PVG 12:28 · LAX 20:28 · JFK 23:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.