LoginSignup
5
1

More than 1 year has passed since last update.

【rails】DBアクセス時のログにLoadと表示されるメソッドと、表示されないメソッドの違いとは

Last updated at Posted at 2022-03-23

DBアクセス時に、モデル名 Loadと表示されるメソッドの例

User.all
=> User Load (4.6ms)  SELECT "users".* FROM "users"

User.first
User Load (5.2ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1

User.find(1)
User Load (1.4ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1

DBアクセス時に、モデル名 Loadとログに表示されないメソッドの例

User.count
(2.0ms)  SELECT COUNT(*) FROM "users"

User.pluck("email")
(1.7ms)  SELECT "users"."email" FROM "users"

上記の違いは単純で、モデルオブジェクトの構築の有無です。
モデル名 Loadのようにログにでるものは、モデルオブジェクトを作成した上で、メモリにロードしているんですね。

pluckなどもメモリにデータをロードしてるんですが、モデルオブジェクトではないのでその分高速です。

pluck必要なフィールドだけを読み込むことで、メモリの使用量も削減できるとの事で
これが圧倒的に早い理由らしい

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1