Slow Query on 9.2 causes Merge Request Label Search to timeout
ZD Ticket: https://gitlab.zendesk.com/agent/tickets/78775
Steps to reproduce:
- Navigate to /dashboard/merge_requests
- Adjust search parameters to
No Assignee. - 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 by Nick Thomas