これは、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に、追加の順序句が追加されます。takevsの間にパフォーマンスの違いがあるかどうか疑問に思っていfirstます。
takeよりも高速ですか、firstそれともその逆ですか?