【发布时间】:2014-12-22 17:21:26
【问题描述】:
所以我正在和我的几个朋友一起做一个需要加载大量种子数据的 Rails 项目。我在 JSON 文档中有种子数据,该文档现在包含不到 3200 个 JSON 对象,每个对象都有相同的 3 个字段名称。
我已经在 Rails 中解析并植入了这些数据,为每个 JSON 对象创建了一条新记录。我应该注意到该对象有几个has_many 关联。
问题是,在我用 JSON 文件植入数据库之后,当我尝试将所有 3200 条记录加载到页面中时(仅使用一个普通的 ModelName.all.each 块),加载时间是荒谬的.. .about 17826ms(17.8 秒)。
根据控制台,它显示(Views: 16252.4ms | ActiveRecord 1522.9ms)。我已经研究过实现急切加载和预加载(我仍在努力)。
我的问题是,如何进一步优化它?我已经尝试ModelName.preload(:associationName) 进行预加载,但这似乎根本没有改变响应时间(也许我做错了)。令我惊讶的是,3200 条记录并不是很多……为什么要花这么长时间?在项目的早期就加入像 Redis 这样更快的东西会是一个可行的选择吗?
【问题讨论】:
-
您是否将
ModelName.all.each放在视图中? -
您能否粘贴示例模型数据和您说 ModelName.all 时正在执行的查询。同时粘贴相关型号代码。
-
@tagCincy
ModelName.all位于一个控制器变量中,该变量在视图中以each调用
标签: sql ruby-on-rails json database activerecord