diff options
author | Claire <claire.github-309c@sitedethib.com> | 2021-05-05 22:04:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-05 22:04:52 +0200 |
commit | d9ae3db8d5543cf0b7fa44186c191c9bb2472d23 (patch) | |
tree | 512309009b33d99557dbfbc7d2513b1b3792bf60 /app/models | |
parent | 351c74459084ccffce1333b57c2af9a6b55cac8d (diff) |
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**.
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/follow_recommendation.rb | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/app/models/follow_recommendation.rb b/app/models/follow_recommendation.rb index 6670b6560..1ed6dc49b 100644 --- a/app/models/follow_recommendation.rb +++ b/app/models/follow_recommendation.rb @@ -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 |