Improve performance of follow recommendation scheduler (#16159)
Express follow_recommendations in terms of account_summaries rather than accounts, integrate filters that are unconditionally used, and materialize the resulting view. This should result in the bulk of the computation being performed only once instead of **once per recommendation language**.
This commit is contained in:
@ -14,9 +14,11 @@ class FollowRecommendation < ApplicationRecord
|
||||
belongs_to :account_summary, foreign_key: :account_id
|
||||
belongs_to :account, foreign_key: :account_id
|
||||
|
||||
scope :safe, -> { joins(:account_summary).merge(AccountSummary.safe) }
|
||||
scope :localized, ->(locale) { joins(:account_summary).merge(AccountSummary.localized(locale)) }
|
||||
scope :filtered, -> { joins(:account_summary).merge(AccountSummary.filtered) }
|
||||
|
||||
def self.refresh
|
||||
Scenic.database.refresh_materialized_view(table_name, concurrently: true, cascade: false)
|
||||
end
|
||||
|
||||
def readonly?
|
||||
true
|
||||
|
Reference in New Issue
Block a user