[前][次][番号順一覧][スレッド一覧]

rails:2089

From: "Hideaki Takata" <hide.takata@g...>
Date: Thu, 29 Mar 2007 17:22:55 +0900
Subject: [rails:2089] Re: INCLUDE を使用した場合の動作

高田と申します。

companies = Company.find(:all, include=>users)
companies.each do |company|
  users = company.users.find(:all, :conditions => ['old >= ?', 30])
end

では、いけませんか?

高田英明



07/03/28 に msasaki<sato1192two9low@y...> さんは書きました:
> 佐々木です。
>
> 小宮様ご回答ありがとうございます。
>
> >すべての企業と、企業に属する 30 歳以上の社員ということであれば
>  >以下のようなコードになると思います。
>  >
>  >companies = Company.find(:all)
>  >companies.each do |company|
>  >users = company.users.find(:all, :conditions => ['old >= ?', 30])
>  >end
>
> 上記の方法だと企業数分SQLが追加発行されますので、以下のincludeを使った方法に比べ格段にパフォーマンスが落ちてしまいます。
>
> companies = Company.find(:all, :conditions => ['users.old >= ?', 30],
>                                     :include => :users)
>
> 試しに企業数 5,  社員300程度で測定したところDBアクセスが 3倍遅くなりました。
>
> 社員に30歳以上いることが保障されていれば、includeで特に問題ないので
> どうにかincludeを使いつつ高速に且つ簡単に実現できないかと悩んでおります。
>
> またjoinを使えば出来ますが、joinを使うとRailsの良さが消えるので出来ればあまり使いたくないと思っています。
>
>
>
>  ________________________________
> [10th Anniversary] Check Out the Special Final Sale
>
>
>


-- 
##
hide.takata@g...

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

   @  2084 2007-03-27 14:14 [sato1192two9low@y...] INCLUDE を使用した場合の動作            
      2086 2007-03-28 11:42 ┣[katsuwo@m...        ]                                       
   @  2087 2007-03-28 13:00 ┃┗[sato1192two9low@y...]                                     
->    2089 2007-03-29 10:22 ┃ ┗[hide.takata@g...    ]                                   
      2090 2007-03-29 11:33 ┣[saitou@g...         ]                                       
      2091 2007-03-29 12:13 ┗[osakanas@g...       ]