Reduce query counts when querying API resources.
Review Request #6411 — Created Oct. 6, 2014 and submitted — Latest diff uploaded
We previously introduced a prefetch_related() optimization for list
resources, helping to get the query counts down for any referenced
ManyToManyFields.We also had a select_related() call, but this wasn't good enough.
Calling select_related() without parameters will only operate on
ForeignKeys that don't allow for NULL values.Now, we build a list of fields to explicitly pass to select_related().
This has the benefit of working with fields that allow NULL values, and
prevents looking up fields we're not going to return in the payload.
Primarily tested with /api/review-requests/. When spanning pages, we
had a query count of 27 prior to this change (factoring in only the
queries that were part of the API payload, and not ones like the session
or siteconfig).After this change, that was down to 6 (1 for the main query, 1 for total
numbers of items, 4 for the relations).