使用Benchmark ips我做了这个测试。如果我在刚刚测试过的地方出错,请纠正我。请注意,96是我的数据库中第一个用户的ID。Rails 5 - 第一vs哪里限制1 vs发现
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,2.3.1红宝石
您并未实际运行“where”查询。可能如果你在它的末尾添加一个'.to_a',它实际上会运行。 –