V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
kenshinhu
0.01D
V2EX  ›  问与答

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

  •  
  •   kenshinhu · Mar 22, 2017 · 1772 views
    This topic created in 3337 days ago, the information mentioned may be changed or developed.

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

    有三个数据 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 replies    2017-03-22 11:03:52 +08:00
    sorra
        1
    sorra  
       Mar 22, 2017   ❤️ 1
    Post join UserFavor on Post.id = UserFavor.postId where Post.uid = ? limit n
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4436 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 05:17 · PVG 13:17 · LAX 22:17 · JFK 01:17
    ♥ Do have faith in what you're doing.