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

[数据库设计]一张多字段的表,分为两个关联表,是否合理?对性能是否有影响?

  •  
  •   blue7wings · 2016-01-24 14:35:23 +08:00 · 4260 次点击
    这是一个创建于 3230 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我把一张 user 表分为以下两个表,这么做合理嘛?




    19 条回复    2016-01-26 00:39:10 +08:00
    decken
        1
    decken  
       2016-01-24 14:52:26 +08:00 via Android
    看场景?方便还是性能
    blue7wings
        2
    blue7wings  
    OP
       2016-01-24 14:58:14 +08:00
    @decken 我原先建了一张 user 表,发现字段不够用了,就想能不能加一张表,而不是加字段,就想到了这个问题。
    LINAICAI
        3
    LINAICAI  
       2016-01-24 15:10:15 +08:00
    如果是我, addition 表用 id 做主健, user_id 外健。
    blue7wings
        4
    blue7wings  
    OP
       2016-01-24 15:13:15 +08:00
    @LINAICAI 关联表有没有主键貌似没啥关系吧。
    TangMonk
        5
    TangMonk  
       2016-01-24 15:13:22 +08:00
    用 json 存储
    LINAICAI
        6
    LINAICAI  
       2016-01-24 15:14:04 +08:00   ❤️ 1
    info 字段如果不常用和很多数据,我会拆开来,但如果就这样这么点字段,感觉性能差不不懂的
    decken
        7
    decken  
       2016-01-24 15:30:49 +08:00 via Android   ❤️ 1
    @blue7wings 可以,最少改动最好了。量少无需太关注性能
    blue7wings
        8
    blue7wings  
    OP
       2016-01-24 15:38:31 +08:00
    @LINAICAI
    @decken 谢谢两位。
    blue7wings
        9
    blue7wings  
    OP
       2016-01-24 15:38:42 +08:00
    @TangMonk 用 mongo?
    cevincheung
        10
    cevincheung  
       2016-01-24 15:47:41 +08:00
    @blue7wings
    postgresql jsonb
    fredcc
        11
    fredcc  
       2016-01-24 16:56:47 +08:00 via Android
    如果生命周期中用户量只有十几万无所谓,如果是百万级别,还是好好考虑,联合查询稍微写得差点就瘫了
    TangMonk
        12
    TangMonk  
       2016-01-24 17:20:27 +08:00
    @blue7wings postgres 呗,支持的数据类型很多的,没有必要再去开个表
    shot
        13
    shot  
       2016-01-24 18:48:19 +08:00
    不 提数据量就讨论性能都是耍流氓。
    akira
        14
    akira  
       2016-01-24 19:47:46 +08:00
    影响肯定有,但是脱离实际场景讨论无价值。
    blue7wings
        15
    blue7wings  
    OP
       2016-01-24 20:43:08 +08:00
    @cevincheung
    @TangMonk 谢谢,去了解一下。
    iMouseWu
        16
    iMouseWu  
       2016-01-24 21:20:54 +08:00
    看需求和自己的业务场景了。
    这些字段本来应该是可以记录在一张表的,但是随着业务的发展,发现其中有 10 个字段在 90%的场景下是会同时出现的,剩下的 5 个字段(比如说地址信息),在极少数的业务场景下才会用到,那么楼主可以把你一张表的数据分成两张表存储,以减少原始表的大小。
    msg7086
        17
    msg7086  
       2016-01-25 06:00:08 +08:00
    主要是内存占用优化。
    很多时候数据库的数据会缓存在内存中。如果能把大量无用字段分出去的话,对提高内存有效利用率很有帮助。
    yuriko
        18
    yuriko  
       2016-01-25 08:10:12 +08:00
    不知道自己理解的对不对, mongo 应该没有表的概念了,就是一堆键值对的数据库……
    附表使用率不高的话是合理的,反之就会拖累效率,多表查询是个效率不怎么的事情……
    主键这东西和索引还是又一定关系的,对查询效率有影响
    不是这方面的专家,说错轻喷
    JamesRuan
        19
    JamesRuan  
       2016-01-26 00:39:10 +08:00
    对性能是一点有影响的,但是 ,一般人遇到的应用,性能一定是最后考虑的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2883 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:10 · PVG 23:10 · LAX 07:10 · JFK 10:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.