索引访问相关,如 use_index, ignore_index 等告诉优化器是否选择某个索引; Join 相关,如 hash_join, inl_join 等指定特殊的 Join 方式,或 leading, straight_join 等指定 Join 顺序; 资源控制相关,如 max_execution_time, memory_quota 指定查询的最大执行时间和内存,或 resource_group 给查询指定特定的资源组...
| 401 | use_index(@`sel_1` `test`.`t` `a`), no_order_index(@`sel_1` `test`.`t` `a`) | create global binding from history using plan digest "0d6e97fb1191bbd08dddefa7bd007ec0c422b1416b152662768f43e64a9958a6" | | select * from `t` where `b` = ? and `c` = ?
| 401 | use_index(@`sel_1` `test`.`t` `a`), no_order_index(@`sel_1` `test`.`t` `a`) | create global binding from history using plan digest "0d6e97fb1191bbd08dddefa7bd007ec0c422b1416b152662768f43e64a9958a6" | select * from `t` where `b` = ? and `c` = ? | ...
使用 USE INDEX, FORCE INDEX, IGNORE INDEX 与 MySQL 类似, 没有使用预期索引的查询计划是慢查询的常见原因,这时就要用 USE INDEX 指定查询用的索引,例如下面例子 USE/FORCE INDEX 使得原本全表扫描的 SQL 变成了通过索引扫描。mysql> explain select * from t; +---+---+---+---+---+| id |...
目前TiDB 支持将 json_member_of、json_contains 和json_overlaps 条件自动转换成 IndexMerge 来访问多值索引。既可以依赖优化器根据代价自动选择,也可通过 use_index_merge optimizer hint 或 use_index 指定选择多值索引,见下面例子: mysql> CREATE TABLE t1 (j JSON, INDEX idx((CAST(j->'$.path' AS SIGN...
Build 端是 IndexFullScan或IndexRangeScan类型的算子,Probe 端是 TableRowIDScan类型的算子。 IndexLookUp 示例: mysql> explain select * from t use index(idx_a);+---+---+---+---+---+| id | estRows | task | access object | operator info |+---+---+---+-...
执行过程也很类似,先汇总所有 Build 端 TiKV 扫描上来的 RowID,再去 Probe 端上根据这些 RowID 精确地读取 TiKV 上的数据。Build 端是IndexFullScan或IndexRangeScan类型的算子,Probe 端是TableRowIDScan类型的算子。 IndexLookUp 示例: mysql> explain select * from t use index(idx_a);...
当前这里为了说明问题,我们一直是将 SET session tidb_enable_index_merge = OFF 的,这里直接打开开关之后就可以直接选到 IndexMerge 的计划,在老旧的 TiDB 版本或者统计信息不准确的 TiDB 实例中,观测到上述问题之后,可以先使用 Hint /*+ use_index_merge(t1) */ 指导优化器选择 IndexMerge 的物理实现。可以看...
使用USE INDEX, FORCE INDEX, IGNORE INDEX 与MySQL 类似, 没有使用预期索引的查询计划是慢查询的常见原因,这时就要用 USE INDEX 指定查询用的索引,例如下面例子 USE/FORCE INDEX 使得原本全表扫描的 SQL 变成了通过索引扫描。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 mysql> explain select * from ...
TiDB(root@127.0.0.1:test) > explain select * from t use index(idx_a) where a = 1; +---+---+---+---+---+ id | estRows | task | access object | operator info | +---+---+---+---