这是关于 ActiveRecord 查询方法的问题:
first
查找第一条记录(如果提供了参数,则查找前 N 条记录)。如果没有定义顺序,它将按主键排序。take
给出一条记录(如果提供了参数,则给出 N 条记录),没有任何隐含顺序。顺序将取决于数据库实现。如果提供订单,它将受到尊重。
用例:根据唯一属性从数据库中检索记录,例如。
User.where(email: 'f@example.com')
在这里,
first
生成
SELECT "users".* FROM "users" WHERE "users"."email" = 'f@example.com' ORDER BY "users"."id"` ASC LIMIT 1
take
生成
SELECT "users".* FROM "users" WHERE "users"."email" = 'f@example.com' LIMIT 1
如上所示,first
添加了额外的排序条款。我想知道take
vs之间是否存在性能差异first
。
是take
快于first
还是反之亦然?