У меня длинная сложная домашняя страница, на которой отображается компания , для каждого проекта информация о последних событиях . Идея состоит в том, что у них есть своего рода информационный центр с большим объемом данных, из которого они могут отслеживать всю активность.
У меня были проблемы с тем, чтобы эта страница работала хорошо - два дня назад время локальной загрузки составляло 4,5 с (!), И в настоящее время оно составляет ~ 2,5 с (!). Самым тревожным моментом в этой ужасной производительности является то, что это время загрузки только с 3 проектами и практически без событий. Производительность в живом приложении немного лучше, но этого недостаточно.
Цель: улучшить время загрузки на домашней странице
Вот текущие запросы.
# controller
@projects = @company.projects.order("project_title ASC").includes({:events => :owner}).search(params[:search], params[:page])
# view
@projects.each do |project|
@events = project.events.where(:active => true).includes(:owner).order("priority DESC")
end
Удаление .where(:active => true).includes(:owner).order("priority DESC")
сокращает 1,1 секунды в приложении всего с 3 проектами и 4 событиями.
Как эти запросы должны быть написаны оптимально? Должна ли индексирование играть роль в этом случае?
Я поигрался с индексами базы данных для зацикленного запроса в представлении, но пока не получил ни одного, чтобы сократить время.