[
https://issues.apache.org/jira/browse/CAY-2917?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jadon Hansell updated CAY-2917:
-------------------------------
Summary: Add Qualifier Joins Before Dependent Table Joins (was: Add
Qualifier Joins Before Depenent Table Joins)
> Add Qualifier Joins Before Dependent Table Joins
> ------------------------------------------------
>
> Key: CAY-2917
> URL: https://issues.apache.org/jira/browse/CAY-2917
> Project: Cayenne
> Issue Type: Improvement
> Reporter: Jadon Hansell
> Priority: Major
> Time Spent: 10m
> Remaining Estimate: 0h
>
> When a query is executed on the parent model in a vertical inheritance
> scenario, the ColumnExtractorStage adds left joins to all dependent tables to
> gather the necessary columns for the select. After that, the rest of the
> joins for the query are added in the PrefetchNodeStage,
> QualifierTranslationStage, etc. This can have a large performance impact when
> there are several dependent tables.
> For example, PostgreSQL's query planner will only attempt to reorder the
> first 8 joins (by default) to try to determine an optimal join order for the
> query. With a small number of dependent tables, it will usually execute the
> joins added by the QualifierTranslationStage first to narrow down the result
> set before executing the dependent tables' left joins for the rest of the
> data. However, if you have 8 or more dependent tables, a very inefficient
> query plan is created. All the dependent tables' left joins are executed
> first, ballooning the number of rows the query has to process until it gets
> to the qualifier joins at the end. This can significantly reduce the speed of
> some queries.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)