Improve custom fields list performance
|Assignee:||Jean-Philippe Lang||% Done:|
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:
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:
A patch file is attached.
#2 Updated by Jean-Philippe Lang over 4 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.