18|读懂MySQL中的执行计划(下)
俊达
接上一讲
POSSIBLE_KEYS
possible_keys 列显示查询单元能使用 range、ref 等访问路径访问的索引。执行计划最终选择的索引在 keys 列显示。是否使用索引,以及使用哪个索引,取决于优化器对各种访问方式的成本评估,还跟表连接的顺序和连接算法也有关系。
下面这个例子中,t1 表的 possible_keys 有索引 idx_abc,但是当 t1 表作为驱动表时,就无法使用索引 idx_abc。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
1. 索引路径和实际使用的索引对于优化器选择索引和执行计划的影响 2. 索引列的总长度和使用情况,以及如何推算执行计划使用到的索引字段 3. 用于进行索引查找的值,包括常量匹配、字段匹配或函数计算结果匹配 4. 查询单元需要访问的记录数的预估值,对执行时间的影响 5. 经过where子句条件过滤后的记录数百分比,优化器计算和优化规则的影响 6. 索引的实际使用情况,包括索引路径、索引列长度、查找值、访问记录数和过滤后的记录数百分比 7. 优化器的成本评估和规则,对索引路径选择和使用的影响 8. 索引路径选择和成本评估,受优化器成本评估、表连接顺序和连接算法的影响 9. 条件过滤的优化器规则和参数,包括通过直方图精确计算filtered值和控制条件过滤的参数 10. 执行计划中额外的重要信息,如使用临时表、skip scan、覆盖索引、排序需求、连接算法等的影响
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 运维实战课》,新⼈⾸单¥59
《MySQL 运维实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 叶明思考题 将子查询改为联表查询,先聚合后 join,避免对表中每行记录都进行聚合计算 select t1.id, t1.a, t2.avg_b from tab t1 inner join ( select a, avg(b) avg_b from tab group by a ) t2 on t1.a = t2.a order by id; 10000 rows in set (0.04 sec)
作者回复: 这样改效果不错👍
2024-09-27归属地:江苏 - 123老师,文中说到“const 表示查询最多返回 1 行记录。对主键或唯一索引的所有字段都使用常量等值匹配时,type 为 const。优化器会将 type 为 const 的查询单元直接替换为常量表。”这个常量表具体指什么,是如何产生的?该主键索引的查询到的值不也是需要通过B+树层级扫描链接获取到吗?2024-09-27归属地:浙江
收起评论