MySQL 运维实战课
张新铭(俊达)
云掣科技资深数据库专家,前淘宝网、支付宝数据库专家
814 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 20 讲/共 41 讲
MySQL 运维实战课
15
15
1.0x
00:00/00:00
登录|注册

18|读懂MySQL中的执行计划(下)

接上一讲

POSSIBLE_KEYS

possible_keys 列显示查询单元能使用 range、ref 等访问路径访问的索引。执行计划最终选择的索引在 keys 列显示。是否使用索引,以及使用哪个索引,取决于优化器对各种访问方式的成本评估,还跟表连接的顺序和连接算法也有关系。
下面这个例子中,t1 表的 possible_keys 有索引 idx_abc,但是当 t1 表作为驱动表时,就无法使用索引 idx_abc。
mysql> explain select * from tab t1, tab t2 where t1.a = t2.a and t1.b = t2.b;
+----+-------------+-------+------+---------------+---------+---------+-------------------+------+----------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------+---------------+---------+---------+-------------------+------+----------+-------+
| 1 | SIMPLE | t1 | ALL | idx_abc | NULL | NULL | NULL | 9913 | 100.00 | NULL |
| 1 | SIMPLE | t2 | ref | idx_abc | idx_abc | 8 | rep.t1.a,rep.t1.b | 1 | 100.00 | NULL |
+----+-------------+-------+------+---------------+---------+---------+-------------------+------+----------+-------+
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 索引路径和实际使用的索引对于优化器选择索引和执行计划的影响 2. 索引列的总长度和使用情况,以及如何推算执行计划使用到的索引字段 3. 用于进行索引查找的值,包括常量匹配、字段匹配或函数计算结果匹配 4. 查询单元需要访问的记录数的预估值,对执行时间的影响 5. 经过where子句条件过滤后的记录数百分比,优化器计算和优化规则的影响 6. 索引的实际使用情况,包括索引路径、索引列长度、查找值、访问记录数和过滤后的记录数百分比 7. 优化器的成本评估和规则,对索引路径选择和使用的影响 8. 索引路径选择和成本评估,受优化器成本评估、表连接顺序和连接算法的影响 9. 条件过滤的优化器规则和参数,包括通过直方图精确计算filtered值和控制条件过滤的参数 10. 执行计划中额外的重要信息,如使用临时表、skip scan、覆盖索引、排序需求、连接算法等的影响

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《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归属地:浙江
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部