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

在处理一些像“收藏”或“关注”等问题的时候,更倾向于是一张表建立关系还是一张表多个字段?

  •  
  •   cevincheung · 2015-05-19 12:55:00 +08:00 · 1496 次点击
    这是一个创建于 3469 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如收藏啊

    文章表:

    articleid title
    1 some title
    2 some title

    一个表,加一个字段这么存

    userid favorite
    1 1,2
    --- 获取一篇文章的收藏用户列表
    select userid from users where find_in_set(1,favorite)
    

    还是:

    userid articleid
    1 1
    1 2
    --- 获取一篇文章的收藏用户列表
    select userid from favorite where articleid = :articleId
    
    3 条回复    2015-05-21 19:28:49 +08:00
    lincanbin
        1
    lincanbin  
       2015-05-19 13:06:34 +08:00 via Android   ❤️ 3
    后者,前者处理起来不方便。
    后者可以直接left join文章表,一条SQL就可以实现查询收藏文章列表,并且在量大了之后依旧有不错的性能。
    lincanbin
        2
    lincanbin  
       2015-05-19 13:07:47 +08:00 via Android
    无论是实现难度还是性能,都是后者占优!
    nekoyaki
        3
    nekoyaki  
       2015-05-21 19:28:49 +08:00
    第一种不如存储在redis里面了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2930 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:55 · PVG 21:55 · LAX 05:55 · JFK 08:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.