计算记录数

时间:2011-03-14 17:51:23

标签: mysql ruby-on-rails activerecord

我有一个Rails应用程序,我有以下数据库架构: 每个用户都有很多会员,每个会员都有很多标签。 表之间的链接是直接的(成员表有一个user_id列,而Tags有一个member_id列)。

计算与用户关联的标签数量的最强高效方法是什么? 是通过Rails和activerecord还是纯sql?

有什么想法/例子吗?

2 个答案:

答案 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,我确信你可以剃掉一两个。