Skip to content

Eliminate N+1 queries in /api/groups/:id

Stan Hu requested to merge sh-preload-associations-for-group-api into master

In https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15475/diffs, a significant amount of work went into eliminating N+1 queries in the /api/groups/:id/projects endpoint. We can reuse the Entities::Project.prepare_relation call on the projects.

In a group with 2,573 projects on GitLab.com, this change significantly improves performance:

  • 18019 SQL queries down to 21
  • Time spent in DB: 70 s down to 384 ms

This endpoint is by far the worst we have of all our API endpoints:

image

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/49845

Edited by Stan Hu

Merge request reports