只今Ruby勉強中

プログラミングRuby―達人プログラマーガイド

うさぎさんと一緒にRubyの勉強をしているオレの記録。

間違ってる所とかいっぱいあると思いますけど、誰でもコメント出来るので気軽に教えて下さい。

普段は 鷹の島 って所で書いてます。

現在のハマリポイント - yield, succ?, Proc & 後で

2008-11-05 (Wed)

rails での has_and_belongs_to_many 19:33  rails での has_and_belongs_to_many - 只今Ruby勉強中 を含むブックマーク

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