ker*_*lin 6 ruby mysql optimization performance ruby-on-rails
我有一个棒球工具,允许用户分析球员的历史击球统计数据.例如,在夜间条件下,A-Rod在过去7天内有多少次点击?我想扩展时间范围,以便用户可以将玩家的击球统计数据分析到365天.但是,这样做需要一些严格的性能优化.这是我目前的一套模型:
class AtBat < ActiveRecord::Base
belongs_to :batter
belongs_to :pitcher
belongs_to :weather_condition
### DATA MODEL ###
# id
# batter_id
# pitcher_id
# weather_condition_id
# hit (boolean)
##################
end
class BattingStat < ActiveRecord::Base
belongs_to :batter
belongs_to :recordable, :polymorphic => true # e.g., Batter, Pitcher, WeatherCondition
### DATA MODEL ###
# id
# batter_id
# recordable_id
# recordable_type
# hits7
# outs7
# at_bats7
# batting_avg7
# ...
# hits365
# outs365
# at_bats365
# batting_avg365
##################
end
class Batter < ActiveRecord::Base
has_many :batting_stats, :as => :recordable, :dependent => :destroy
has_many :at_bats, :dependent => :destroy
end
class Pitcher < ActiveRecord::Base
has_many :batting_stats, :as => :recordable, :dependent => :destroy
has_many :at_bats, :dependent => :destroy
end
class WeatherCondition < ActiveRecord::Base
has_many :batting_stats, :as => :recordable, :dependent => :destroy
has_many :at_bats, :dependent => :destroy
end
Run Code Online (Sandbox Code Playgroud)
为了使我的问题保持合理的长度,让我讲述我正在做什么来更新batting_stats表而不是复制一堆代码.让我们从7天开始吧.
步骤1-4也重复其他时间段--15天,30天等.
现在我想象如果我将时间段从可管理的7/15/30扩展到7/15/30/45/60/90/180/365,那么每天运行脚本来进行这些更新是多么费力. .
所以我的问题是你如何让这个以最高水平的性能运行?
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |