Skip to content
Extraits de code Groupes Projets
Valider 703c52f7 rédigé par Fabián Rodríguez's avatar Fabián Rodríguez
Parcourir les fichiers

limit ShareablesFromPerson queries to improve performance

parent 3f3b8f0d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -116,16 +116,12 @@ module EvilQuery ...@@ -116,16 +116,12 @@ module EvilQuery
def make_relation! def make_relation!
return querents_posts if @person == @querent.person 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 = contact.present? ? fetch_ids!(persons_private_visibilities, "share_visibilities.shareable_id") : []
shareable_ids += fetch_ids!(persons_public_posts, table_name + ".id") shareable_ids += fetch_ids!(persons_public_posts, table_name + ".id")
@class.where(:id => shareable_ids, :pending => false). @class.where(:id => shareable_ids, :pending => false).
select('DISTINCT '+table_name+'.*'). select('DISTINCT ' + table_name + '.*').
order(table_name+".created_at DESC") order(table_name + ".created_at DESC")
end end
protected protected
...@@ -143,11 +139,11 @@ module EvilQuery ...@@ -143,11 +139,11 @@ module EvilQuery
end end
def persons_private_visibilities 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 end
def persons_public_posts 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 end
end end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter