Improve issue load time performance by avoiding ORDER BY in find_by call
The Sortable concern has a default scope that adds ORDER BY to all queries. EXPLAIN ANALYZE shows that this additional ORDER BY statement causes the SQL optimizer to use the wrong index, which leads to a load time of 2.9 s vs 0.073 ms just for the SELECT call. The minimal change here is to re-implement find_by using where and reorder to remove the ORDER BY clause in IssuesController#index. Closes #23075
This commit is contained in:
parent
6320192592
commit
aada01030c
|
@ -3,6 +3,7 @@ Please view this file on the master branch, on stable branches it's out of date.
|
|||
v 8.13.0 (unreleased)
|
||||
- Update runner version only when updating contacted_at
|
||||
- Add link from system note to compare with previous version
|
||||
- Improve issue load time performance by avoiding ORDER BY in find_by call
|
||||
- Use gitlab-shell v3.6.2 (GIT TRACE logging)
|
||||
- Fix centering of custom header logos (Ashley Dumaine)
|
||||
- AbstractReferenceFilter caches project_refs on RequestStore when active
|
||||
|
|
|
@ -159,7 +159,8 @@ class Projects::IssuesController < Projects::ApplicationController
|
|||
protected
|
||||
|
||||
def issue
|
||||
@noteable = @issue ||= @project.issues.find_by(iid: params[:id]) || redirect_old
|
||||
# The Sortable default scope causes performance issues when used with find_by
|
||||
@noteable = @issue ||= @project.issues.where(iid: params[:id]).reorder(nil).take || redirect_old
|
||||
end
|
||||
alias_method :subscribable_resource, :issue
|
||||
alias_method :issuable, :issue
|
||||
|
|
Loading…
Reference in New Issue