自分の認識では、変数に代入すればメモリにキャッシュされることでSQLが発行しなくなくなるはずなのですが
変数に代入しても普通にSQLが発行していて混乱をきたしています。
以下はわかります
railsconsole
1irb(main):002:0> users = User.all 2User Load (0.6ms) SELECT "users".* FROM "users" LIMIT ? [["LIMIT", 11]]
ですが、以下でもSQLが発行しているのが謎です。
変数に代入したことでメモリにキャッシュされているはずなのでSQLが発行しないはずです。
railsconsole
1irb(main):003:0> users 2User Load (0.5ms) SELECT "users".* FROM "users" LIMIT ? [["LIMIT", 11]]
preloadも同様です。以下はわかります。
railsconsole
1irb(main):004:0> users = User.preload(:posts) 2 User Load (0.6ms) SELECT "users".* FROM "users" LIMIT ? [["LIMIT", 11]] 3 Post Load (4.5ms) SELECT "posts".* FROM "blogs" WHERE "posts"."user_id" IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) ORDER BY "blogs"."created_at" DESC
ですが、キャッシュしたはずなのに再度SQLが発行しています。
railsconsole
1irb(main):006:0> users 2 User Load (1.4ms) SELECT "users".* FROM "users" LIMIT ? [["LIMIT", 11]] 3 Blog Load (5.4ms) SELECT "blogs".* FROM "blogs" WHERE "blogs"."user_id" IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) ORDER BY "blogs"."created_at" DESC
質問
変数に代入したのに、変数を実行すると再度SQLが発行されるのは何故ですか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/14 13:23
2020/06/14 13:51
2020/06/14 13:55