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