Benchmark ipsを使用してこのテストを行いました。私がちょうどテストしたものが間違っているなら、私を訂正してください。 96は私のdbの最初のユーザーのIDです。Rails 5 - 最初の制限と1の制限の比較
Benchmark.ips do |x|
x.report("first") do
User.first
end
x.report("where") do
User.where(id: 96).limit(1)
end
x.report("find") do
User.find(96)
end
x.compare!
end
私はこのテストを数回実行し、その結果として、これを得た
Comparison:
where: 26430.8 i/s
first: 999.8 i/s - 26.44x slower
find: 964.3 i/s - 27.41x slower
この私のconclussionは、これらの特定のユーザーを取得するには、はるかに遅いの方法があるとして、常に最初の場所使用の代わりに、検索したりすることがあります。
Railsの5.0.0.1、PostgreSQLの9.5.3、Rubyの2.3.1
「場所」クエリは実際には実行されていません。おそらく '.to_a'をその末尾に追加すると実際に実行されます。 –