ActiveRecord 多対多のパフォーマンス

テーブル
groups:10万件
works:100万件
group_mappings:100万件

この状態で以下の処理を実行

  def edit_map
    gid = 90000
    GroupMapping.destroy_all(['group_id = ?', gid])
    
    g = Group.find(gid)
    for r in 1..20
      gm = GroupMapping.new
      gm.group_id = gid
      gm.work_id = r
      gm.save
    end
  end

1回目
#Completed in 1.17137 (0 reqs/sec) | Rendering: 0.01985 (1%) | DB: 1.06541 (90%) | 200 OK http://localhost/test/edit_map
2回目
#Completed in 0.49981 (2 reqs/sec) | Rendering: 0.00101 (0%) | DB: 0.44497 (89%) | 200 OK http://localhost/test/edit_map
3回目
#Completed in 0.24295 (4 reqs/sec) | Rendering: 0.00093 (0%) | DB: 0.18428 (75%) | 200 OK http://localhost/test/edit_map

このぐらいのデータ量ならぼちぼち。
問題が発生したら考えよう。

ActiveMessaging?? AP4R??
http://d.hatena.ne.jp/kiwamu/20070628/1183063085