0

我正在尝试缓存数据库中的一些数据,以减少对数据库的 SQL 查询数量。目前,我正在做的是我将从数据库中加载一组记录:

@records = Record.find(:all, :conditions => ["id < ?", 100])

然后遍历这个数组来找到我真正想要的记录:

@needed_records = Array.new
@records.each do |record|
  if record.is_needed
    @needed_records.push(record)
  end
end

所以每当我需要时,我可以只传递@records 而不是实际访问数据库。

我的问题是,这样做有什么缺点吗?有没有更好的方法来做同样的事情?

4

1 回答 1

0

我推荐两种方法:

1)更好的方法是使用条件和范围来过滤您正在寻找的实际数据,而不是拉动和手动迭代记录。这假设您可以将“record.is_needed”转换为条件或 SQL 以获得所需的结果

2)使用Rails的缓存存储来自数据库的结果:http: //guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-store

Rails.cache.write(:records, @records)

数据库喜欢被查询......他们下车了!

于 2012-11-05T22:04:34.523 回答