0
У меня есть приложение rails3, в котором я пытаюсь оптимизировать некоторые SQL-запросы.Rails 3: оптимизация запроса выбора ActiveRecord
Is, User.select([:id, name]).all
, быстрее чем User.all
?
У меня есть приложение rails3, в котором я пытаюсь оптимизировать некоторые SQL-запросы.Rails 3: оптимизация запроса выбора ActiveRecord
Is, User.select([:id, name]).all
, быстрее чем User.all
?
Да User.select([:id, :name]).all
быстрее User.all
select id, name from users
просто быстрее, чем select * from users
Все возвращенные записи обернут AR так, вероятно, инициализирует объект только с 2 значениями (ID, имя) потребуется меньше времени.
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)
да потому User.select ([: номер, имя]). Все выбирает только номер, имя, где, как User.all выбирает все столбцы –
Ok, но с выбором, существует дополнительный метод call и mysql должны искать соответствующий столбец. –
@ JérémyPouyet Дополнительного вызова не требуется. 'User.all' переводит' select * from users', тогда как 'User.select ([: id, name]). All' переводит на' select id, name from users' – Catfish