forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit64919aa
committed
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 aroundthe "subquery" sub-tree of each view's RTE_SUBQUERY RTE. But once wehave successfully flattened the subquery, we don't need that anymore,because the planner isn't going to do anything else interesting withthat RTE. We already zap the subquery pointer during setrefs.c (cf.add_rte_to_flat_rtable), but it's useless baggage earlier than thattoo. Clearing the pointer as soon as pull_up_simple_subquery is donewith the RTE reduces the cost from O(N^3) to O(N^2); which is stillnot great, but it's quite a lot better. Further improvements willrequire rethinking of the RTE data structure, which is being consideredin another thread.Patch by me; thanks to Dean Rasheed for review.Discussion:https://postgr.es/m/797aff54-b49b-4914-9ff9-aa42564a4d7d@www.fastmail.com1 parentc7b7311 commit64919aa
1 file changed
+11
-4
lines changedLines changed: 11 additions & 4 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
893 | 893 |
| |
894 | 894 |
| |
895 | 895 |
| |
896 |
| - | |
897 |
| - | |
898 |
| - | |
899 |
| - | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
900 | 899 |
| |
901 | 900 |
| |
902 | 901 |
| |
| |||
1174 | 1173 |
| |
1175 | 1174 |
| |
1176 | 1175 |
| |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
| 1182 | + | |
| 1183 | + | |
1177 | 1184 |
| |
1178 | 1185 |
| |
1179 | 1186 |
| |
|
0 commit comments
Comments
(0)