Improve performance of 3 api endpoints by about 312% (for O3 data) #4813
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
/api/v1/products
,/api/v1/machines
, and/api/v1/test_suites
share the same backend code for fetching data. The current implementation makes thousands of select queries to fetch settings. That is very inefficient, so this patch switches to a join/collapse based prefetch approach. This is slightly more efficient than a plain prefetch, because it avoids the creation of DateTime objects. See https://metacpan.org/pod/DBIx::Class::ResultSet#collapse for more information about the collapse feature.Progress: https://progress.opensuse.org/issues/94667