Patch #24587
Improve custom fields list performance
Status: | Closed | Start date: | ||
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | % Done: | 0% | ||
Category: | Performance | |||
Target version: | 3.4.0 |
Description
The custom fields list displays the number of projects the issue custom field is used in by doing a database query for each custom field:
custom_field.projects.count
To improve the performance dramatically when there are really lots of issue custom fields the counts should be pre-loaded with a single database query:
@custom_fields_projects_count = IssueCustomField.where(is_for_all: false).joins(:projects).group(:custom_field_id).count
In the view the counts can then be accessed by:
@custom_fields_projects_count[custom_field.id]
A patch file is attached.
Regards,
Thomas
Associated revisions
Improve custom fields list performance (#24587).
Patch by Thomas Löber.
Make it work for 0 projects (#24587).
History
#1
Updated by Pavel Rosický over 5 years ago
what about a counter cache? custom_field.projects_count?
#2
Updated by Jean-Philippe Lang over 5 years ago
- Status changed from New to Closed
- Assignee set to Jean-Philippe Lang
- Target version set to 3.4.0
Patch committed with a slight change to handle the case where there are 0 projects that use the field.
what about a counter cache? custom_field.projects_count?
Adding a cache counter for that seems a bit overkill to me.