limit ShareablesFromPerson queries to improve performance
This commit is contained in:
parent
3f3b8f0d28
commit
703c52f74c
1 changed files with 4 additions and 8 deletions
|
|
@ -116,16 +116,12 @@ module EvilQuery
|
|||
def make_relation!
|
||||
return querents_posts if @person == @querent.person
|
||||
|
||||
# persons_private_visibilities and persons_public_posts have no limit which is making shareable_ids gigantic.
|
||||
# perhaps they should the arrays should be merged and sorted
|
||||
# then the query at the bottom of this method can be paginated or something?
|
||||
|
||||
shareable_ids = contact.present? ? fetch_ids!(persons_private_visibilities, "share_visibilities.shareable_id") : []
|
||||
shareable_ids += fetch_ids!(persons_public_posts, table_name + ".id")
|
||||
|
||||
@class.where(:id => shareable_ids, :pending => false).
|
||||
select('DISTINCT '+table_name+'.*').
|
||||
order(table_name+".created_at DESC")
|
||||
select('DISTINCT ' + table_name + '.*').
|
||||
order(table_name + ".created_at DESC")
|
||||
end
|
||||
|
||||
protected
|
||||
|
|
@ -143,11 +139,11 @@ module EvilQuery
|
|||
end
|
||||
|
||||
def persons_private_visibilities
|
||||
contact.share_visibilities.where(:hidden => false, :shareable_type => @class.to_s)
|
||||
contact.share_visibilities.where(:hidden => false, :shareable_type => @class.to_s).limit(15)
|
||||
end
|
||||
|
||||
def persons_public_posts
|
||||
@person.send(table_name).where(:public => true).select(table_name+'.id')
|
||||
@person.send(table_name).where(:public => true).select(table_name + '.id').limit(15)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue