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