SQLのログを見ていて気がついたのですが、 最近のActiveRecordは以下のようにEagerLoadingしようとすると、 こんな感じのSQLを発行します。

   1  ?> Article.find(:all, :include => [:user => :face]);1
   2  => 1
   3  >>   Article Load (0.005234)   SELECT * FROM `articles`
   4    User Load (0.000645)   SELECT * FROM `users` WHERE (`users`.id IN ('13','9','37','17','1','3'))
   5    Face Load (0.002931)   SELECT `faces`.* FROM `faces` WHERE (`faces`.user_id IN (1,3,9,13,17,37))

以前のようにJOINを使わずに、3回に分けるようになっているのですね。

しかしながら、条件が複雑になってくると、 :limitオプションとの相性が悪いケースがあるようで、 まだ若干バグがあるようです。 そんな時は手で:joinsを書いています。

posted by Png genki on Sun 3 Aug 2008 at 22:18

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry723
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ