在看TiDB中Cascades优化器相关的代码,发现在onPhaseExploration似乎没有和Join Order相关的规则,想要问一下在Cascades优化器中关于Join Order的规则有实现吗?具体的代码是在哪儿?
补充:看到了,应该是在onImplementation的探索的,但是似乎目前只实现了HashJoin和MergeJoin。
在看TiDB中Cascades优化器相关的代码,发现在onPhaseExploration似乎没有和Join Order相关的规则,想要问一下在Cascades优化器中关于Join Order的规则有实现吗?具体的代码是在哪儿?
补充:看到了,应该是在onImplementation的探索的,但是似乎目前只实现了HashJoin和MergeJoin。
这些文档有看到过,TiDB目前有两个优化器,老的优化器里面分为逻辑和物理优化,reorder在逻辑优化中,并且实现了贪心和动态规划的算法,另外一个是Cascades的优化器,里面逻辑优化和物理优化应该是放在一起的,而对于join order的选择放在了onImplementation里面的规则里面,并且似乎只体现在 了hash join上,也就是选择哪张表作hash。
是的
目前 cascades 中还没有具体的 join reorder 的实现,在讨论预期中还是倾向收集到 join group 之后再做贪心或者动态规划这样。
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。