これは、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
それともその逆ですか?