Это вопрос о методах запросов ActiveRecord:
-
first
Найдите первую запись (или первые N записей, если задан параметр). Если порядок не задан, он будет выполнять первичный ключ. -
take
Дает запись (или N записей, если предоставляется параметр) без какого-либо подразумеваемого порядка. Порядок будет зависеть от реализации базы данных. Если заказ будет предоставлен, он будет соблюден.
UseCase: извлекать запись из базы данных на основе уникального атрибута, например.
User.where(email: '[email protected]')
здесь,
first
генерирует
SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' ORDER BY "users"."id"` ASC LIMIT 1
take
генерирует
SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1
как показано выше first
, добавляется дополнительное предложение заказа. Мне интересно, есть ли разница в производительности между take
vs first
.
Является take
быстрее, чем first
или наоборот?