diff --git a/explain-index-merge.md b/explain-index-merge.md index 6359e1d9e5d8..e78479aa2d03 100644 --- a/explain-index-merge.md +++ b/explain-index-merge.md @@ -90,7 +90,7 @@ EXPLAIN SELECT /*+ USE_INDEX_MERGE(t, idx_a, idx_b, idx_c) */ * FROM t WHERE a > > > - TiDB 的索引合并特性在 v5.4.0 及之后的版本默认开启,即 [`tidb_enable_index_merge`](/system-variables.md#tidb_enable_index_merge-从-v40-版本开始引入) 为 `ON`。 > - 如果查询中使用了 SQL 优化器 Hint [`USE_INDEX_MERGE`](/optimizer-hints.md#use_index_merget1_name-idx1_name--idx2_name-),无论 `tidb_enable_index_merge` 开关是否开启,都会强制使用索引合并特性。当过滤条件中有无法下推的表达式时,必须使用 Hint [`USE_INDEX_MERGE`](/optimizer-hints.md#use_index_merget1_name-idx1_name--idx2_name-) 才能开启索引合并。 -> - 如果查询有除了全表扫描以外的单索引扫描方式可以选择,优化器不会自动选择索引合并,只能通过 Hint 指定使用索引合并。从 v8.1.0 开始,这个限制可以通过 [Optimizer Fix Control 52869](/optimizer-fix-controls.md#52869-从-v810-版本开始引入) 解除。解除此限制能让优化器在更多查询中自动选择索引合并,但也有可能忽略其他更好的执行计划,因此建议在解除此限制前针对实际场景进行充分测试,确保不会带来性能回退。 +> - 当 [Optimizer Fix Control 52869](/optimizer-fix-controls.md#52869-从-v810-版本开始引入) 为 `OFF` 时,如果查询有除了全表扫描以外的单索引扫描方式可以选择,优化器不会自动选择索引合并,只能通过 Hint 指定使用索引合并。从 v8.5.7 和 v9.0.0 起,该开关的默认值变为 `ON`,上述限制默认已被解除,优化器可以在更多查询中自动选择索引合并。 > - 索引合并目前无法在临时表上使用。 > - 交集型索引合并目前不会被优化器自动选择,必须使用 [`USE_INDEX_MERGE`](/optimizer-hints.md#use_index_merget1_name-idx1_name--idx2_name-) Hint 指定**表名和索引名**时才会被选择。 diff --git a/optimizer-fix-controls.md b/optimizer-fix-controls.md index c83be957fe87..b43c5a9cb417 100644 --- a/optimizer-fix-controls.md +++ b/optimizer-fix-controls.md @@ -103,14 +103,14 @@ SET SESSION tidb_opt_fix_control = '44262:ON,44389:ON'; ### [`52869`](https://github.com/pingcap/tidb/issues/52869) 从 v8.1.0 版本开始引入 -- 默认值:`OFF` +- 默认值:`ON`。在 v8.5.7 和 v9.0.0 之前的版本中,默认值为 `OFF`。 - 可选值:`ON`、`OFF` -- 如果查询有除了全表扫描以外的单索引扫描方式可以选择,优化器不会自动选择索引合并。详情请参考[用 EXPLAIN 查看索引合并的 SQL 执行计划](/explain-index-merge.md#示例)中的**注意**部分。 -- 打开此开关后,这个限制会被解除。解除此限制能让优化器在更多查询中自动选择索引合并,但也有可能忽略其他更好的执行计划,因此建议在解除此限制前针对实际场景进行充分测试,确保不会带来性能回退。 +- 当该开关为 `OFF` 时,如果查询有除了全表扫描以外的单索引扫描方式可以选择,优化器不会自动选择索引合并。详情请参考[用 EXPLAIN 查看索引合并的 SQL 执行计划](/explain-index-merge.md#示例)中的**注意**部分。 +- 当该开关为 `ON` 时,上述限制会被解除,优化器可以在更多查询中自动选择索引合并。但由于代价估算等原因,优化器有可能错过原本最优的执行计划。 ### [`54337`](https://github.com/pingcap/tidb/issues/54337) 从 v8.3.0 版本开始引入 - 默认值:`OFF` - 可选值:`ON`、`OFF` - 目前,TiDB 优化器在处理每个子句包含范围列表的复杂连接条件时,推导索引范围存在一定限制。此问题可以通过应用通用范围交集来解决。 -- 打开此开关后,这个限制会被解除。解除此限制能让优化器处理复杂范围交集。然而,对于子句数量较多(超过 10 个)的条件,可能会有略微增加优化时间的风险。 \ No newline at end of file +- 打开此开关后,这个限制会被解除。解除此限制能让优化器处理复杂范围交集。然而,对于子句数量较多(超过 10 个)的条件,可能会有略微增加优化时间的风险。