PERF: Cache Category.subcategory_ids (#9350)

Also reset category cache after backup restore.
This commit is contained in:
Dan Ungureanu
2020-04-09 15:42:24 +03:00
committed by GitHub
parent 1cd8c6ce4c
commit 3d9c320aab
5 changed files with 43 additions and 27 deletions

View File

@@ -669,7 +669,7 @@ class TopicQuery
if options[:no_subcategories]
result = result.where('categories.id = ?', category_id)
else
result = result.where(<<~SQL, subcategory_ids: subcategory_ids(category_id), category_id: category_id)
result = result.where(<<~SQL, subcategory_ids: Category.subcategory_ids(category_id), category_id: category_id)
categories.id in (:subcategory_ids) AND (
categories.topic_id <> topics.id OR categories.id = :category_id
)
@@ -1052,11 +1052,6 @@ class TopicQuery
private
def subcategory_ids(category_id)
@subcategory_ids ||= {}
@subcategory_ids[category_id] ||= Category.subcategory_ids(category_id)
end
def sanitize_sql_array(input)
ActiveRecord::Base.public_send(:sanitize_sql_array, input.join(','))
end