Optimize MergeRequestDiff#last_commit_sha
The previous implementation would load all the MergeRequestDiffCommit
entries into memory and retrieve the SHA from the latest entry. We can
save a bit of database query time and memory by using the database to
retrieve the first item from the database, particularly when there
are many merge requests that need this information.
Seen while investigating Todo API performance in https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/25711
The SQL query now has a LIMIT 1
instead:
Before
SELECT "merge_request_diff_commits".* FROM "merge_request_diff_commits" WHERE "merge_request_diff_commits"."merge_request_diff_id" = $1 ORDER BY "merge_request_diff_commits"."merge_request_diff_id" ASC, "merge_request_diff_commits"."relative_order" ASC
After
SELECT "merge_request_diff_commits".* FROM "merge_request_diff_commits" WHERE "merge_request_diff_commits"."merge_request_diff_id" = 35499485 ORDER BY "merge_request_diff_commits"."merge_request_diff_id" ASC, "merge_request_diff_commits"."relative_order" ASC LIMIT 1
Edited by Stan Hu