pgsql: Reduce the cost of planning deeply-nested views.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Reduce the cost of planning deeply-nested views.
Дата
Msg-id E1m0pj2-0007Ph-Nl@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Reduce the cost of planning deeply-nested views.

Joel Jacobson reported that deep nesting of trivial (flattenable)
views results in O(N^3) growth of planning time for N-deep nesting.
It turns out that a large chunk of this cost comes from copying around
the "subquery" sub-tree of each view's RTE_SUBQUERY RTE.  But once we
have successfully flattened the subquery, we don't need that anymore,
because the planner isn't going to do anything else interesting with
that RTE.  We already zap the subquery pointer during setrefs.c (cf.
add_rte_to_flat_rtable), but it's useless baggage earlier than that
too.  Clearing the pointer as soon as pull_up_simple_subquery is done
with the RTE reduces the cost from O(N^3) to O(N^2); which is still
not great, but it's quite a lot better.  Further improvements will
require rethinking of the RTE data structure, which is being considered
in another thread.

Patch by me; thanks to Dean Rasheed for review.

Discussion: https://postgr.es/m/797aff54-b49b-4914-9ff9-aa42564a4d7d@www.fastmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/64919aaab45076445051245c9bcd48dd84abebe7

Modified Files
--------------
src/backend/optimizer/prep/prepjointree.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Avoid doing catalog lookups in postgres_fdw's conversion_error_c
Следующее
От: Alvaro Herrera
Дата:
Сообщение: pgsql: Improve TestLib::system_or_bail error reporting