Projects::CommitsController#show runs a SQL query for every commit author

When viewing https://gitlab.com/gitlab-org/gitlab-ce/commits/master it seems we're running 1 query to get the author of every commit:

0.002ms	SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."target_project_id" = 13083 AND "merge_requests"."iid" = 15225
0.002ms	SELECT * FROM users WHERE id IN ( SELECT id FROM users WHERE email = 'winnie@gitlab.com' UNION SELECT emails.user_id FROM emails WHERE email = 'winnie@gitlab.com' ) LIMIT 1;
0.002ms	SELECT * FROM users WHERE id IN ( SELECT id FROM users WHERE email = 'douwe@gitlab.com' UNION SELECT emails.user_id FROM emails WHERE email = 'douwe@gitlab.com' ) LIMIT 1;
0.002ms	SELECT * FROM users WHERE id IN ( SELECT id FROM users WHERE email = 'tzallmann@gitlab.com' UNION SELECT emails.user_id FROM emails WHERE email = 'tzallmann@gitlab.com' ) LIMIT 1;
0.002ms	SELECT * FROM users WHERE id IN ( SELECT id FROM users WHERE email = 'godfat@godfat.org' UNION SELECT emails.user_id FROM emails WHERE email = 'godfat@godfat.org' ) LIMIT 1;

We should change this so the authors are eager loaded. This can simply be done by somehow changing the WHERE email = X to a regular WHERE IN clause.

Assignee Loading
Time tracking Loading