【rails】DBアクセス時のログにLoadと表示されるメソッドと、表示されないメソッドの違いとは
1051 ワード
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必要なフィールドだけを読み込むことで、メモリの使用量も削減できるとの事で
これが圧倒的に早い理由らしい
Author And Source
この問題について(【rails】DBアクセス時のログにLoadと表示されるメソッドと、表示されないメソッドの違いとは), 我々は、より多くの情報をここで見つけました https://qiita.com/at_sushi/items/efa42191432478d1fdc8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .