我有一个rails3应用程序,我试图优化一些SQL查询。
是User.select([:id, name]).all
,是否比User.all
更快?
答案 0 :(得分:1)
是User.select([:id, :name]).all
比User.all
select id, name from users
比select * from users
所有返回的记录都由AR包装,因此初始化对象时只需要2个值(id,name)将花费更少的时间。
1.9.3p448 :002 > Benchmark.measure {User.select([:id, :name]).all }
=> 0.340000 0.010000 0.350000 ( 0.348017)
1.9.3p448 :003 > Benchmark.measure {User.all }
=> 0.770000 0.060000 0.830000 ( 0.935314)