【发布时间】:2011-09-16 18:30:13
【问题描述】:
我正在使用 Ruby on Rails 3.0.7,我想知道,关于性能问题,User.find(<id>) 方法和 User.where(:id => <id>) 方法之间有什么区别。
【问题讨论】:
标签: ruby-on-rails ruby performance ruby-on-rails-3 methods
我正在使用 Ruby on Rails 3.0.7,我想知道,关于性能问题,User.find(<id>) 方法和 User.where(:id => <id>) 方法之间有什么区别。
【问题讨论】:
标签: ruby-on-rails ruby performance ruby-on-rails-3 methods
简短的回答,但是:这真的没关系(除非您的 id 列上没有唯一约束)。
【讨论】:
.find 不需要分配数组(但这是您不应该关心的实现细节)。使用.find 的原因是:.find(foo) 比.where(:id => foo).first 更具可读性。
在后台,find 或多或少地完成了您使用 where 描述的内容。您可以在this post 中找到详细信息。话虽如此,如果您希望通过 id 获取单个记录,那么您可能想要使用@987654322@。这就是 find 在您使用 id 的单个参数调用它时最终会做的事情,但是您将跳过它需要运行的所有其他代码来找出您想要的。
【讨论】: