有没有办法在 Rails 预加载上改进我的 Ruby?
Is there a way to improve my Ruby on Rails eager loading?
我正在处理我的 Rails 应用程序中的一个页面,该页面需要通过许多关联表显示信息。目前,此页面需要大约 15 秒来加载大约 700 条记录。我正在尝试优化数据查询。目前,我的查询如下所示:
@students = Student.includes(:school, orders: { cart: { packages: [:options, :order_packages] } })
.where('students.school_id = ?', params[:school_id])
.where('students.teacher like ?', '%day%')
.where('students.grade = ?', '12')
.order(:last_name)
此查询需要通过 .includes 方法进行深层嵌套关联。 运行 这个查询有更有效的方法吗?
这看起来不像是预加载问题。您只是查询 students
table 中的列。确保这些列具有正确的索引并且您的查询正在使用这些索引。确保关联的 table 的外键具有索引,并且这些外键也用于完成预先加载。
我正在处理我的 Rails 应用程序中的一个页面,该页面需要通过许多关联表显示信息。目前,此页面需要大约 15 秒来加载大约 700 条记录。我正在尝试优化数据查询。目前,我的查询如下所示:
@students = Student.includes(:school, orders: { cart: { packages: [:options, :order_packages] } })
.where('students.school_id = ?', params[:school_id])
.where('students.teacher like ?', '%day%')
.where('students.grade = ?', '12')
.order(:last_name)
此查询需要通过 .includes 方法进行深层嵌套关联。 运行 这个查询有更有效的方法吗?
这看起来不像是预加载问题。您只是查询 students
table 中的列。确保这些列具有正确的索引并且您的查询正在使用这些索引。确保关联的 table 的外键具有索引,并且这些外键也用于完成预先加载。