DBアクセス時にログにLoadと出るものと出ないものの違いは？


例えばallを実行すると、`User Load`という文字が表示されます。

[code]

    User.all
     User Load (3.5ms)  SELECT "users".* FROM "users"
    
[/code]

一方で、`pluck`を実行するとSQL自体は一緒のようですが`User Load`は表示されません。

[code]

    User.pluck(:name)
    (1.9ms)  SELECT "users"."name" FROM "users"
    
[/code]

はじめはメモリにロードしているかの違いかなと思ったんですが、  
`pluck`もメモリにロードしてることは一緒だと思うので、何が違うのかなと疑問に思いました。

[code]

    names = User.pluck(:name)
    (1.9ms)  SELECT "users"."name" FROM "users"
    
    names 
    => ["foo", "bar"]
    
[/code]

上記のように`XXX Load`と表示されるものとされないものの違いをご存知の方がいたらご教示いただけませんでしょうか？




クエリの結果として`User`オブジェクトが作られるか作られないかの違いです。(たしか)

Railsの基本はモデルオブジェクトを利用することですが、`#pluck`はモデルオブジェクトを作らないので単純に値がほしいときには高速です。

