jackwener commented on PR #4620: URL: https://github.com/apache/arrow-datafusion/pull/4620#issuecomment-1361016922
> One classic way to represent the joins in a query is with a JoinGraph as @mingmwang points out where the nodes represent relations (tables / views / subqueries) and the edges represent predicates between them Exploiting the properties of graphs is a particularly complex. (Traverse the entire graph along the edges to can avoid `Cross Products` to avoid to produce useless Join Enumeration), it is some JoinReorder Algorithm `without Cross Products` Like DPCcp, paper: `Analysis of Two Existing and One New Dynamic Programming Algorithm for the Generation of Optimal Bushy Join Trees without Cross Products`. DPHyp(DPCcp enhancement), paper: `Dynamic Programming Strikes Back` Graph Simplifier (Reducing the size of the graph) paper: `Query Simplification: Graceful Degradation for Join-Order Optimization`. Above methods exist in MySQL8.0, like https://github.com/mysql/mysql-server/blob/8.0/sql/join_optimizer/hypergraph.h -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org