私は 6500 のデータベースを持っておりplayers
、各プレイヤーは平均 15 ゲームを持っていますresults
。
使用事例
賞金の合計(結果テーブルのフィールド)で並べ替えられたプレーヤーのリストを生成したいと考えています。私はこれが何らかの範囲内にあることを好むので、プレイヤーの国などでリストをフィルタリングすることもできます.
パフォーマンス
cache_counter
パフォーマンスの分野について言及している投稿を見たことがあります。私の場合、何千もの結果レコード (75.000 以上)があるため、生成されたリストに誰かがアクセスするたびに計算を実行したくありません。
質問
これを解決するための最良のパターンは何ですか? そして、どうすればそれを実装できますか?
モデル
class Player < ActiveRecord::Base
has_many :results
end
class Result < ActiveRecord::Base
belongs_to :player
end
スキーマ
create_table "players", :force => true do |t|
t.string "name"
t.string "nationality"
end
create_table "results", :force => true do |t|
t.integer "player_id"
t.date "event_date"
t.integer "place"
t.integer "prize"
end
アップデート
私が達成しようとしているのは、使用できるようになることです。
@players = Player.order_by_prize
と
@players = Player.filter_by_country('USA').order_by_prize('desc')