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

rails:2087

From: msasaki <sato1192two9low@y...>
Date: Wed, 28 Mar 2007 20:00:08 +0900 (JST)
Subject: [rails:2087] Re: INCLUDE を使用した場合の動作

佐々木です。
   
  小宮様ご回答ありがとうございます。

  >すべての企業と、企業に属する 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


添付ファイル

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

   @  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...       ]