Slow Query on 9.2 causes Merge Request Label Search to timeout

ZD Ticket: https://gitlab.zendesk.com/agent/tickets/78775

Steps to reproduce:

  1. Navigate to /dashboard/merge_requests
  2. Adjust search parameters to No Assignee.
  3. Search for a label.

Working with the customer we found this query which looks to be the culprit:

projects`.`id` = `merge_requests`.`target_project_id` AND `projects`.`pending_delete` = 0 INNER JOIN `label_links` ON `label_links`.`target_id` = `merge_requests`.`id` AND `label_links`.`target_type` = 'MergeRequest' INNER JOIN `labels` ON `labels`.`id` = `label_links`.`label_id` WHERE `merge_requests`.`deleted_at` IS NULL AND (`merge_requests`.`state` IN ('opened','reopened')) AND `projects`.`archived` = 0 AND `labels`.`title` = 'label')

UNION

SELECT `projects`.`id` FROM `projects` WHERE `projects`.`id` IN (SELECT `merge_requests`.`target_project_id` FROM `merge_requests` INNER JOIN `projects` ON `projects`.`id` = `merge_requests`.`target_project_id` AND `projects`.`pending_delete` = 0 INNER JOIN `label_links` ON `label_links`.`target_id` = `merge_requests`.`id` AND `label_links`.`target_type` = 'MergeRequest' INNER JOIN `labels` ON `labels`.`id` = `label_links`.`label_id` WHERE `merge_requests`.`deleted_at` IS NULL AND (`merge_requests`.`state` IN ('opened','reopened')) AND `projects`.`archived` = 0 AND `labels`.`title` = 'label'))) AND (`project_features`.`merge_requests_access_level` IN (10, 20) OR `project_features`.`merge_requests_access_level` IS NULL) |
Edited Jul 11, 2019 by Nick Thomas
Assignee Loading
Time tracking Loading