Skip to content

Commit b2104f4

Browse files
authored
tidb: add the join order related variable tidb_opt_join_reorder_through_sel (#21292)
1 parent ae3c17c commit b2104f4

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

system-variables.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3899,6 +3899,17 @@ mysql> desc select count(distinct a) from test.t;
38993899
- 这个变量用来控制 TiDB Join Reorder 算法的选择。当参与 Join Reorder 的节点个数大于该阈值时,TiDB 选择贪心算法,小于该阈值时 TiDB 选择动态规划 (dynamic programming) 算法。
39003900
- 目前对于 OLTP 的查询,推荐保持默认值。对于 OLAP 的查询,推荐将变量值设为 10~15 来获得 AP 场景下更好的连接顺序。
39013901

3902+
### `tidb_opt_join_reorder_through_sel` <span class="version-mark">从 v8.5.6 和 v9.0.0 版本开始引入</span>
3903+
3904+
- 作用域:SESSION | GLOBAL
3905+
- 是否持久化到集群:是
3906+
- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:是
3907+
- 类型:布尔型
3908+
- 默认值:`OFF`
3909+
- 该变量用于提升部分多表 JOIN 查询的连接顺序优化 (Join Reorder) 效果。当该变量值为 `ON` 时,在满足安全条件的前提下,优化器会将多个连续 JOIN 之间的过滤条件 (`Selection`) 一并纳入连接顺序优化的候选范围。在重建 JOIN 树时,优化器会将这些条件下推至更合适的位置,从而使更多表参与连接顺序优化。
3910+
- 如果开启后出现性能回退或执行计划不稳定,建议将该变量设置为 `OFF` 以关闭此功能。
3911+
- 对于包含非确定性函数或具有副作用的过滤条件(例如 `RAND()`),即使开启该变量,优化器也不会执行条件下推操作,以保证表达式的求值语义不变。
3912+
39023913
### `tidb_opt_limit_push_down_threshold`
39033914

39043915
- 作用域:SESSION | GLOBAL

0 commit comments

Comments
 (0)