这是获取current_user帖子的更快捷方式

时间:2014-03-26 12:22:49

标签: ruby-on-rails

我使用Rails,我做这样的事情 - 效率更高?

post = current_user.posts.find(29)

OR

post = Post.where("user_id = ? AND id = ?", user.id, 29).first

我猜测第一个语句会执行SELECT * FROM posts WHERE user_id = x(current_user是预设的用户实例),然后在返回的数组/行中查找#29后的内容。然而,第二个可能会做SELECT * FROM posts WHERE user_id = x AND id = 29 LIMIT 0,1之类的事情..是否更快地获取所有,没有任何标准,然后让红宝石搜索返回的数组/行;或者,是标准和限制更快的方式;或者,它取决于桌子的长度/宽度和无数其他东西?感谢

1 个答案:

答案 0 :(得分:1)

两种情况下的SQL查询都是一样的。所以执行时间没有区别 - 但第一个陈述更惯用,因此应该是首选。