何时避免加入Rethinkdb是件好事

时间:2014-10-15 22:43:11

标签: join rethinkdb

我们假设我们有两个表:usercomment。每个注释都有一个用户的外键和一个线程ID。线程ID不是唯一的。 我们希望通过线程ID和关联用户来获取所有评论。我们知道只有几个与该评论集关联的唯一用户(例如:1000条评论: - :10位用户)。

我有两种策略来进行查询:

  1. 使用等号连接:

    r.db('test').table('comments').get_all(thread_id, index='t')\  
    .eq_join('user', r.db('test').table('user'))
    
  2. 使用两个单独的查询:

    comments = list(r.db('test').table('comments').get_all(thread_id, index='t').run())
    user_ids = set([c['user'] for c in comments])
    users = list(r.db('test').table('user').get_all(*users))
    
  3. 哪一个是优先考虑的?或者还有其他更好的解决方案?

    在做一些测试时,我发现2.性能更好 - 这是合理的。我们不需要在数据库端链接所有相同的用户,并且传输的数据更小。

    它如何符合RethinkDB设计以及RethinkDB如何进行连接?如果RethinkDB有连接,那么我假设某些用法是合理的(例如,当一些注释与关联用户的数量具有相同的顺序时)。

0 个答案:

没有答案