Fix slow distinct queries where grouped queries are faster (#15287)
About 2x speed-up on inboxes query
This commit is contained in:
		
					parent
					
						
							
								a8c471fcc0
							
						
					
				
			
			
				commit
				
					
						48bef17cc9
					
				
			
		
					 4 changed files with 4 additions and 4 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
| 
 | ||||
|  |  | |||
|  | @ -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 | ||||
| 
 | ||||
|  |  | |||
|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue