Only fetch fields we need in task manager #12045
Merged
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.
By using .only we select fewer columns, avoiding potentially large
fields that we never reference.
Also, small tweak to eliminate what was a duplicate dictionary of
hostname:instance, because we don't need build and carry two copies of
the same data.
SUMMARY
Jobs have lots of fields, but we only need a few of them for the task manager.
at @AlanCoding 's suggestion and after reading docs from Django and others, this looks like a better practice because NOT using .only or .defer we end up with what is essentially a
SELECT * FROM table
.ISSUE TYPE
COMPONENT NAME
ADDITIONAL INFORMATION
docs:
https://docs.djangoproject.com/en/4.0/ref/models/querysets/#only
other links:
https://redwerk.com/blog/top-8-mistakes-when-working-with-django-orm/
https://testdriven.io/tips/815d1399-b284-4732-893e-deedd2aa8d49/