perf: Add another index to surveyitemresponses. Implement bullet suggestions. Memoize a function in measure.rb

rpp-main
rebuilt 3 years ago
parent a19a30f5f3
commit 8a23296ca5

@ -29,10 +29,10 @@ class OverviewController < SqmApplicationController
end end
def measures def measures
@measures ||= Measure.all.includes(%i[scales admin_data_items category]) @measures ||= Measure.all.includes(%i[scales admin_data_items category subcategory])
end end
def subcategories def subcategories
@subcategories ||= Subcategory.all @subcategories ||= Subcategory.all.includes(:measures)
end end
end end

@ -25,14 +25,15 @@ class Measure < ActiveRecord::Base
end end
def student_survey_items_with_sufficient_responses(school:, academic_year:) def student_survey_items_with_sufficient_responses(school:, academic_year:)
SurveyItem.where(id: SurveyItem.joins('inner join survey_item_responses on survey_item_responses.survey_item_id = survey_items.id') @student_survey_items_with_sufficient_responses ||=
.student_survey_items SurveyItem.where(id: SurveyItem.joins('inner join survey_item_responses on survey_item_responses.survey_item_id = survey_items.id')
.where("survey_item_responses.school": school, .student_survey_items
"survey_item_responses.academic_year": academic_year, .where("survey_item_responses.school": school,
"survey_item_responses.survey_item_id": survey_items.student_survey_items) "survey_item_responses.academic_year": academic_year,
.group('survey_items.id') "survey_item_responses.survey_item_id": survey_items.student_survey_items)
.having('count(*) >= 10') .group('survey_items.id')
.count.keys) .having('count(*) >= 10')
.count.keys)
end end
def teacher_scales def teacher_scales

@ -0,0 +1,6 @@
class AddSurveyItemIndexToSurveyItemResponses < ActiveRecord::Migration[7.0]
def change
add_index :survey_item_responses, %i[school_id academic_year_id survey_item_id],
name: 'by_school_year_and_survey_item'
end
end

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2023_05_17_191736) do ActiveRecord::Schema[7.0].define(version: 2023_06_10_165508) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -448,6 +448,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_05_17_191736) do
t.index ["academic_year_id"], name: "index_survey_item_responses_on_academic_year_id" t.index ["academic_year_id"], name: "index_survey_item_responses_on_academic_year_id"
t.index ["gender_id"], name: "index_survey_item_responses_on_gender_id" t.index ["gender_id"], name: "index_survey_item_responses_on_gender_id"
t.index ["response_id"], name: "index_survey_item_responses_on_response_id" t.index ["response_id"], name: "index_survey_item_responses_on_response_id"
t.index ["school_id", "academic_year_id", "survey_item_id"], name: "by_school_year_and_survey_item"
t.index ["school_id", "academic_year_id"], name: "index_survey_item_responses_on_school_id_and_academic_year_id" t.index ["school_id", "academic_year_id"], name: "index_survey_item_responses_on_school_id_and_academic_year_id"
t.index ["school_id", "survey_item_id", "academic_year_id", "grade"], name: "index_survey_responses_on_grade" t.index ["school_id", "survey_item_id", "academic_year_id", "grade"], name: "index_survey_responses_on_grade"
t.index ["school_id"], name: "index_survey_item_responses_on_school_id" t.index ["school_id"], name: "index_survey_item_responses_on_school_id"

Loading…
Cancel
Save