Browse Source

Fix slow distinct queries where grouped queries are faster (#15287)

About 2x speed-up on inboxes query
feature_cybrespace_locale
Eugen Rochko 2 years ago committed by GitHub
parent
commit
48bef17cc9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      app/controllers/accounts_controller.rb
  2. 2
      app/controllers/admin/statuses_controller.rb
  3. 2
      app/models/account.rb
  4. 2
      app/models/form/account_batch.rb

2
app/controllers/accounts_controller.rb

@ -81,7 +81,7 @@ class AccountsController < ApplicationController @@ -81,7 +81,7 @@ class AccountsController < ApplicationController
end
def account_media_status_ids
@account.media_attachments.attached.reorder(nil).select(:status_id).distinct
@account.media_attachments.attached.reorder(nil).select(:status_id).group(:status_id)
end
def no_replies_scope

2
app/controllers/admin/statuses_controller.rb

@ -14,7 +14,7 @@ module Admin @@ -14,7 +14,7 @@ module Admin
@statuses = @account.statuses.where(visibility: [:public, :unlisted])
if params[:media]
account_media_status_ids = @account.media_attachments.attached.reorder(nil).select(:status_id).distinct
account_media_status_ids = @account.media_attachments.attached.reorder(nil).select(:status_id).group(:status_id)
@statuses.merge!(Status.where(id: account_media_status_ids))
end

2
app/models/account.rb

@ -443,7 +443,7 @@ class Account < ApplicationRecord @@ -443,7 +443,7 @@ class Account < ApplicationRecord
end
def inboxes
urls = reorder(nil).where(protocol: :activitypub).pluck(Arel.sql("distinct coalesce(nullif(accounts.shared_inbox_url, ''), accounts.inbox_url)"))
urls = reorder(nil).where(protocol: :activitypub).group(:preferred_inbox_url).pluck(Arel.sql("coalesce(nullif(accounts.shared_inbox_url, ''), accounts.inbox_url) AS preferred_inbox_url"))
DeliveryFailureTracker.without_unavailable(urls)
end

2
app/models/form/account_batch.rb

@ -51,7 +51,7 @@ class Form::AccountBatch @@ -51,7 +51,7 @@ class Form::AccountBatch
end
def account_domains
accounts.pluck(Arel.sql('distinct domain')).compact
accounts.group(:domain).pluck(:domain).compact
end
def accounts

Loading…
Cancel
Save