我有一个Rails应用程序,我有以下数据库架构: 每个用户都有很多会员,每个会员都有很多标签。 表之间的链接是直接的(成员表有一个user_id列,而Tags有一个member_id列)。
计算与用户关联的标签数量的最强高效方法是什么? 是通过Rails和activerecord还是纯sql?
有什么想法/例子吗?
答案 0 :(得分:0)
在您的代码模型中,您可以添加范围:
范围:count_by_user,lambda {| user | members.where(“members.user_id> =?”,user) }
怎么样?您在Tag模型中是否有成员函数/关系?
答案 1 :(得分:0)
致电
User.first.tags.count
(假设您在用户模型中设置了关系。)
速度几乎相同(减去Active Record的速度)。 AR将足够智能LIMIT结果1,并实际使用COUNT()sql函数,这是计算记录数的最佳方法。
如果你真的担心这些微优化,那么,如果你编写纯SQL并绕过AR,我确信你可以剃掉一两个。