Reduce complexity of issuable finder query.

This removes the extra check for project-ids which is not needed at all.
This does not necessarily reduce execution time of the query, but
improves planning time by a few millseconds.

Closes #37125.
This commit is contained in:
Andreas Brandl 2018-04-06 12:24:33 +02:00
parent 91a3a4b526
commit cdfe437e8e
2 changed files with 12 additions and 4 deletions

View File

@ -159,7 +159,10 @@ class IssuableFinder
finder_options = { include_subgroups: params[:include_subgroups], only_owned: true }
GroupProjectsFinder.new(group: group, current_user: current_user, options: finder_options).execute
else
ProjectsFinder.new(current_user: current_user, project_ids_relation: item_project_ids(items)).execute
opts = { current_user: current_user }
opts[:project_ids_relation] = item_project_ids(items) if items
ProjectsFinder.new(opts).execute
end
@projects = projects.with_feature_available_for_user(klass, current_user).reorder(nil)
@ -316,9 +319,9 @@ class IssuableFinder
def by_project(items)
items =
if project?
items.of_projects(projects(items)).references_project
elsif projects(items)
items.merge(projects(items).reorder(nil)).join_project
items.of_projects(projects).references_project
elsif projects
items.merge(projects.reorder(nil)).join_project
else
items.none
end

View File

@ -0,0 +1,5 @@
---
title: Reduce complexity of issuable finder query.
merge_request: 18219
author:
type: performance