2008-11-05 (Wed)
■ rails での has_and_belongs_to_many 
SQLite なんですが、find が遅くてたまらん事になってしまった。素敵なやり方をご存知の方は、是非教えてもらえると嬉しいです。
User っていうモデルと Group っていうモデルがあって、has_and_belongs_to_many でつながってる状態。User 数は1万件、Group 数は60件。で、User の中から特定の Group に所属してる User の一覧を作りたいんですが…。
これは、数秒かかるけどまぁ許容範囲。
User.find(:all, :include => :groups, :conditions => [ 'groups.name = ?', 'ほげほげ' ], :limit => 10)
並び替えたり、count を取ろうとするともう無理。1分くらい返事が返ってこない。1分も待ってたらカップラーメンが出来ちゃうYO!
User.count(:include => :groups, :conditions => [ 'groups.name = ?', 'ほげほげ' ]) User.find(:all, :include => :groups, :conditions => [ 'groups.name = ?', 'ほげほげ' ], :limit => 10, :order => 'username')
絶望しながら MySQL で同じ事を試したら、こちらは即座に返事が返ってきた。ていうか、マジ早過ぎなんですけど。
大好きな SQLite が使えないなんてイヤだーー!!
コメント
トラックバック - http://rubyist.g.hatena.ne.jp/gaba/20081105