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

从性能考虑怎样设计在查看用户在一个内容列表的关联状态?

  •  
  •   kenshinhu · 2017-03-22 10:29:35 +08:00 · 1295 次点击
    这是一个创建于 2801 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有一个用户收藏内容埸景,其设计如下

    有三个数据 User (用户表), UserFavor (用户收藏表), Post (发布内容表)

    UserFavor 是关联 User (用户表)和 Post (发布内容表),对应关系是 M:N

    现有一个接口 GET:/post?limit=n(n>10) 要从 Post (发布内容表)查看 n 条记录的内容

    这个可以传入用户的 ID 来查看 用户是否有收藏发布的内容如: GET:/post?limit=n&uid=User.id

    这个接口里会返回 isFavor 状态来标识用户是否已收藏内容

    问题来了

    如果代码上实现的话就是先从 Post 取得 n 条数据 之后再遍历里面的 id 再查 UserFavor 来匹配用户的收藏

    那数据请求就是 1+n 次

    那在什么方案可以减少这个请求次数 但又不减 收藏的标识 实时性呢?

    1 条回复    2017-03-22 11:03:52 +08:00
    sorra
        1
    sorra  
       2017-03-22 11:03:52 +08:00   ❤️ 1
    Post join UserFavor on Post.id = UserFavor.postId where Post.uid = ? limit n
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1501 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:10 · PVG 01:10 · LAX 09:10 · JFK 12:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.