我使用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
之类的事情..是否更快地获取所有,没有任何标准,然后让红宝石搜索返回的数组/行;或者,是标准和限制更快的方式;或者,它取决于桌子的长度/宽度和无数其他东西?感谢
答案 0 :(得分:1)
两种情况下的SQL查询都是一样的。所以执行时间没有区别 - 但第一个陈述更惯用,因此应该是首选。