回答

收藏

在Ruby on Rails获得第一名

技术问答 技术问答 95 人阅读 | 0 人回复 | 2023-09-13

这是有关ActiveRecord查询方法:
2 q4 U3 z0 }8 c. l1 ?first搜索第一条记录(如果提供参数,则在搜索前N条记录)。如果没有定义任何顺序,它将通过主键进行排序。
8 l1 T, o5 Q4 ktake给出记录(如果提供参数,给出N条记录)没有任何隐含的顺序。顺序将取决于数据库的实现。如果提供订单,将受到尊重。
用例:从数据库中检索基于唯一属性的记录。
6 h5 h* U# M/ O) ?2 f3 t. Y$ LUser.where(email: 'f@example.com')在这里,first产生
6 h' P! P  Z0 P5 PSELECT "users".* FROM "users" WHERE "users"."email" = 'f@example.com' ORDER BY "users"."id"` ASC LIMIT 1take 产生/ b( }' i+ p9 ]' u0 S% m: R
SELECT "users".* FROM "users" WHERE "users"."email" = 'f@example.com' LIMIT 1因此,如上所示,first添加额外的排序句。我想知道takevs性能差异之间是否存在性能差异first。* j$ ~; m) q, d+ F; Y
是take快于first还是反之亦然?
  |  ]" \" z# c* O. c6 v5 k                                                               
) C& u; A3 U7 o; @' d. y    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则