开发者社区> 问答> 正文

FindBestQueryPlan函数的逻辑是什么?

FindBestQueryPlan函数的逻辑是什么?

展开
收起
游客c7gnq4eofxp32 2022-05-07 21:06:00 665 0
来自:阿里技术
1 条回答
写回答
取消 提交回答
  • 1.先判断是否属于新优化器可以支持的Query语法(CheckSupportedQuery),不支持的直接返回错误ER_HYPERGRAPH_NOT_SUPPORTED_YET。 2.转化top_join_list变成JoinHypergraph结构。由于Hypergraph是比较独立的算法层面的实现,JoinHypergraph结构用来更好的把数据库的结构包装到Hypergraph的edges和nodes的概念上的。 3.通过EnumerateAllConnectedPartitions实现论文中的DPhyp算法。 CostingReceiver类包含了过去JOIN planning的主要逻辑,包括根据cost选择相应的访问路径,根据DPhyp生成的子计划进行评估,保留cost最小的子计划。 4.得到root_path后,接下来处理group/agg/having/sort/limit的。对于Group by操作,目前Hypergraph使用sorting first + streaming aggregation的方式。

    2022-05-08 10:29:19
    赞同 展开评论 打赏
问答地址:
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
fibjs 模块重构从回调到协程--陈垒 立即下载
fibjs 模块重构从回调到协程 立即下载
低代码开发师(初级)实战教程 立即下载