面试准备指南话题 #15

MySQL 执行计划练习:怎样验证一个索引选择

面试之星官方的头像 面试之星官方 更新于

围绕一条具体 SQL,记录数据分布、执行计划、耗时和写入成本。

索引优化练习应从具体查询开始。先固定业务语义和测试数据,再比较候选索引,避免通过改变结果范围制造“更快”的结论。以下是练习方法,不是针对任意生产库的直接操作指令。

准备可重复的测试

在隔离测试库中建立订单表,包含用户、创建时间、状态与订单编号。构造不同用户拥有不同订单数量的数据,记录版本、表定义和数据生成方式。

写清楚查询目标

例如读取指定用户最近一个月的订单,按创建时间排序并分页。先检查结果是否正确,再讨论索引是否有用。记录筛选条件、排序条件与返回列。

比较候选方案

分别观察没有目标索引、不同列顺序的联合索引,以及查询返回列变化后的计划。记录实际选择的访问路径、估计行数和延迟。EXPLAIN ANALYZE 会执行查询,使用前确认版本支持与运行影响。

不只看读取

索引需要存储空间,也可能增加写入维护成本。在相同环境比较插入与更新,再说明为什么该业务值得承担这些成本。不要把一次热缓存测量与另一次冷缓存测量直接比较。

面试时怎样总结

用“查询目标—证据—改动—结果—限制”的顺序表达。如果没有可靠数据,说明计划观察到的现象与后续实验,不编造提升比例。

参考 MySQL 8.4 索引优化手册。继续阅读 MySQL 专题 连接事务和并发问题。

配套技术专题

更多准备指南

评论 0 友善交流,让每个问题都有回响

还没有评论,分享你的看法吧。