PartitionSelectRule should now strongly favor creating right deep plans#4008
PartitionSelectRule should now strongly favor creating right deep plans#4008alecgrieser wants to merge 2 commits intoFoundationDB:mainfrom
PartitionSelectRule should now strongly favor creating right deep plans#4008Conversation
… there's an existential) This modifies the way `ParititonSelectRule` works so that we only should create right deep plans. It does this by always selecting _n_ - 1 elements from the _n_ quantifiers of each select. Existential predicates are punted in this example because of how they interact with fan out indexes. For now, this just reverts those to their old logic.
…uding using utilities instead of FieldValues
📊 Metrics Diff Analysis ReportSummary
ℹ️ About this analysisThis automated analysis compares query planner metrics between the base branch and this PR. It categorizes changes into:
The last category in particular may indicate planner regressions that should be investigated. Plan and Metrics ChangedThese queries experienced both plan and metrics changes. This generally indicates that there was some planner change Total: 2 queries Statistical Summary (Plan and Metrics Changed)
Significant Regressions (Plan and Metrics Changed)There were 2 outliers detected. Outlier queries have a significant regression in at least one field. Statistically, this represents either an increase of more than two standard deviations above the mean or a large absolute increase (e.g., 100).
Only Metrics ChangedThese queries experienced only metrics changes without any plan changes. If these metrics have substantially changed, Total: 22 queries Statistical Summary (Only Metrics Changed)
There were no queries with significant regressions detected. Minor Changes (Only Metrics Changed)In addition, there were 22 queries with minor changes. |
This modifies the way
ParititonSelectRuleworks so that we only should create right deep plans. It does this by always selecting n - 1 elements from the n quantifiers of each select.Existential predicates are punted in this example because of how they interact with fan out indexes. For now, this just reverts those to their old logic.
The idea is that this vastly cuts down on the search space of join exploration, as we were currently producing many different groupings of the join constituents, which wasn't actually helpful given the join algorithms that we currently support.