Optimize number of queries for approvals
This reduces the number of queries inside the Projects::MergeRequestsController
approval methods by just eager loading some relations
Counting the queries in this spec: ./spec/features/projects/merge_requests/user_approves_merge_request_spec.rb
I noticed this result:
Before:
Projects::MergeRequestsController#approvals (application/json): 31
Projects::MergeRequestsController#approve (application/json): 99
Projects::MergeRequestsController#approvals (application/json): 31
Projects::MergeRequestsController#approve (application/json): 93
Projects::MergeRequestsController#approvals (application/json): 30
Projects::MergeRequestsController#approve (application/json): 91
Projects::MergeRequestsController#approvals (application/json): 31
Projects::MergeRequestsController#approve (application/json): 97
Projects::MergeRequestsController#approvals (application/json): 34
Step 1:
Projects::MergeRequestsController#approvals (application/json): 29
Projects::MergeRequestsController#approve (application/json): 95
Projects::MergeRequestsController#approvals (application/json): 29
Projects::MergeRequestsController#approve (application/json): 89
Projects::MergeRequestsController#approvals (application/json): 28
Projects::MergeRequestsController#approve (application/json): 87
Projects::MergeRequestsController#approvals (application/json): 28
Projects::MergeRequestsController#approve (application/json): 92
Projects::MergeRequestsController#approvals (application/json): 33
Step 2:
Projects::MergeRequestsController#approvals (application/json): 24
Projects::MergeRequestsController#approve (application/json): 89
Projects::MergeRequestsController#approvals (application/json): 24 |
Projects::MergeRequestsController#approve (application/json): 83
Projects::MergeRequestsController#approvals (application/json): 24
Projects::MergeRequestsController#approve (application/json): 83
Projects::MergeRequestsController#approvals (application/json): 24
Projects::MergeRequestsController#approve (application/json): 89
Projects::MergeRequestsController#approvals (application/json): 24
After:
Projects::MergeRequestsController#approvals (application/json): 22
Projects::MergeRequestsController#approve (application/json): 82
Projects::MergeRequestsController#approve (application/json): 76
Projects::MergeRequestsController#approvals (application/json): 22
Projects::MergeRequestsController#approve (application/json): 75
Projects::MergeRequestsController#approvals (application/json): 22
Projects::MergeRequestsController#approve (application/json): 81
Projects::MergeRequestsController#approvals (application/json): 22
Projects::MergeRequestsController#approvals (application/json): 21
So a tiny improvement, there's probably more to be won.
What are the relevant issue numbers?
Fixes: https://gitlab.com/gitlab-org/gitlab-ee/issues/4903 (Partly at least)
Edited by Bob Van Landuyt