Mysql更新性能优化_mysql – 更新大量记录 -​​ 性能优化

我有一个棒球工具,允许用户分析球员的历史击球统计数据.例如,在夜间条件下,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,:dependent => :destroy

end

class WeatherCondition < ActiveRecord::Base

has_many :batting_stats,:dependent => :destroy

end

为了使我的问题保持合理的长度,让我讲述我正在做什么来更新batting_stats表而不是复制一堆代码.让我们从7天开始吧.

>检索过去7天内的所有at_bat记录.

>迭代每个at_bat记录……

>给定at_bat记录,获取相关的batter和相关的weather_condition,找到正确的batting_stat记录(BattingStat.find_or_create_by_batter_and_recordable(batter,weather_condition)),然后更新batting_stat记录.

>对击球手和投手(可录音)重复步骤3.

步骤1-4也重复其他时间段–15天,30天等.

现在我想象如果我将时间段从可管理的7/15/30扩展到7/15/30/45/60/90/180/365,那么每天运行脚本来进行这些更新是多么费力. .

所以我的问题是你如何让这个以最高水平的性能运行?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值