Actions
Feature #42574
closedOptimize autocomplete issue listing triggered by typing "##" by eager loading trackers
Start date:
Due date:
% Done:
0%
Estimated time:
Resolution:
Fixed
Description
When using the autocomplete feature to list issues by typing "##", an N+1 query occurs for loading associated trackers. Each issue's tracker is queried individually.
The attached patch fixes the problem by eager-loading the tracker association.
Before:
Issue Load (1.2ms) SELECT `issues`.* FROM `issues` INNER JOIN `projects` ON `projects`.`id` = `issues`.`project_id` WHERE `issues`.`project_id` = 1 AND (projects.status <> 9 AND projects.status <> 10 AND EXISTS (SELECT 1 AS one FROM enabled_modules em WHERE em.project_id = projects.id AND em.name='issue_tracking')) AND (issues.subject LIKE '%c%') ORDER BY `issues`.`id` DESC LIMIT 10 ↳ app/controllers/auto_completes_controller.rb:36:in 'AutoCompletesController#issues' Tracker Load (0.4ms) SELECT `trackers`.* FROM `trackers` WHERE `trackers`.`id` = 1 LIMIT 1 ↳ app/controllers/auto_completes_controller.rb:77:in 'block in AutoCompletesController#format_issues_json' CACHE Tracker Load (0.0ms) SELECT `trackers`.* FROM `trackers` WHERE `trackers`.`id` = 1 LIMIT 1 ↳ app/controllers/auto_completes_controller.rb:77:in 'block in AutoCompletesController#format_issues_json' CACHE Tracker Load (0.0ms) SELECT `trackers`.* FROM `trackers` WHERE `trackers`.`id` = 1 LIMIT 1 ↳ app/controllers/auto_completes_controller.rb:77:in 'block in AutoCompletesController#format_issues_json' CACHE Tracker Load (0.0ms) SELECT `trackers`.* FROM `trackers` WHERE `trackers`.`id` = 1 LIMIT 1 ↳ app/controllers/auto_completes_controller.rb:77:in 'block in AutoCompletesController#format_issues_json' Tracker Load (0.5ms) SELECT `trackers`.* FROM `trackers` WHERE `trackers`.`id` = 2 LIMIT 1 ↳ app/controllers/auto_completes_controller.rb:77:in 'block in AutoCompletesController#format_issues_json' CACHE Tracker Load (0.0ms) SELECT `trackers`.* FROM `trackers` WHERE `trackers`.`id` = 1 LIMIT 1 ↳ app/controllers/auto_completes_controller.rb:77:in 'block in AutoCompletesController#format_issues_json'
After:
Issue Load (1.2ms) SELECT `issues`.* FROM `issues` INNER JOIN `projects` ON `projects`.`id` = `issues`.`project_id` WHERE `issues`.`project_id` = 1 AND (projects.status <> 9 AND projects.status <> 10 AND EXISTS (SELECT 1 AS one FROM enabled_modules em WHERE em.project_id = projects.id AND em.name='issue_tracking')) ORDER BY `issues`.`id` DESC LIMIT 10 ↳ app/controllers/auto_completes_controller.rb:39:in 'AutoCompletesController#issues' Tracker Load (0.6ms) SELECT `trackers`.* FROM `trackers` WHERE `trackers`.`id` IN (1, 2)
Files
Updated by Marius BĂLTEANU 5 days ago
- Target version changed from Candidate for next minor release to 5.1.8
Actions