Join Reorder 算法简介
因此优化器需要实现一种决定 Join 顺序的算法。目前 TiDB 中使用的算法是 Join Reorder 算法,又称贪心算法。
以三个表 t1、t2、t3 的 Join 为例。首先获取所有参与 Join 的节点,将所有节点按照行数多少,从少到多进行排序。
之后选定其中最小的表,将其与其他两个表分别做一次 Join,观察输出的结果集大小,选择其中结果更小的一对。
以上就是当前 TiDB 中使用的 Join reorder 算法。
Join reorder 算法限制
目前 TiDB 中支持使用 语法来强制指定一种 Join 顺序,参见语法元素说明。