Ruby追随者查询

时间:2012-04-16 22:25:21

标签: sql ruby-on-rails

我们在Rails 3应用程序中有一个SQL查询。

@followers返回current_user后的用户ID数组。

@followers = current_user.following
@feed_items = Micropost.where("belongs_to_id IN (?)", @followers)

有更有效的方法来执行此查询吗?

2 个答案:

答案 0 :(得分:3)

您拥有的查询无法再进行优化。通过向belongs_to_id添加索引可以加快速度(无论如何你都应该对外键执行此操作),但这不会改变实际的查询。

有一种更简洁的方法来编写IN查询:

Micropost.where(:belongs_to_id => @followers)

其中@followersbelongs_to_id的值数组。

答案 1 :(得分:1)

对我来说很好看。

但是,如果您在代码中寻找真正的最小字符数,则可以更改:

Micropost.where("belongs_to_id IN (?)", @followers)

Micropost.where("belongs_to_id = ?", @followers)

更容易阅读。

Rails会看到数组并执行IN

与往常一样,ruby语言的主要目标是可读性,所以很少有改进有帮助。

至于查询是无效的,你可以检查该字段的索引 它们往往对每个数据库更具体一点 - 你只指定了通用的sql。在你的问题中。