Files
sqlalchemy/test/orm/inheritance
Mike Bayer 3e22b7655a Remove ORDER BY pk from subqueryload, selectinload
Modified the queries used by subqueryload and selectinload to no longer
ORDER BY the primary key of the parent entity;  this ordering was there to
allow the rows as they come in to be copied into lists directly with a
minimal level of Python-side collation.   However, these ORDER BY clauses
can negatively impact the performance of the query as in many scenarios
these columns are derived from a subquery or are otherwise not actual
primary key columns such that SQL planners cannot make use of indexes. The
Python-side collation uses the native itertools.group_by() to collate the
incoming rows, and has been modified to allow multiple
row-groups-per-parent to be assembled together using list.extend(), which
should still allow for relatively fast Python-side performance.  There will
still be an ORDER BY present for a relationship that includes an explicit
order_by parameter, however this is the only ORDER BY that will be added to
the query for both kinds of loading.

Fixes: #5162
Change-Id: I8befd1303c1af7cc24cbf005f39bc01c8b2745f3
(cherry picked from commit f86ee556add28afd4de31c10fce56b00a0014a4e)
2020-03-30 11:44:07 -04:00
..
2019-06-21 10:18:17 -04:00
2019-06-21 10:18:17 -04:00
2019-01-06 18:23:11 -05:00
2019-06-21 10:18:17 -04:00
2019-06-21 10:18:17 -04:00
2019-01-06 18:23:11 -05:00
2019-01-06 18:23:11 -05:00