在校招和初级岗位的面试中使用该案例会很有效果,但是整体来说它是一个简单的案例,所以面一些比较高端的岗位的时候,它并不能为你赢得竞争优势。
这个案例可以作为你排查数据库性能问题的案例,也可以作为性能优化的案例。
索引失效有很多种可能,你可以从这个问题里面为什么定义了索引,但是最终数据库却没有用上?找到详细的描述,这个案例描述的是在一些特定的场景下,MySQL 会放弃使用索引,选择使用全表扫描。
就弃用索引选择全表扫描而言,MySQL 本身自认为是做了一个合理的决策,但是实际中可能 MySQL 的这个决策可能效果并不是很好。在这个案例里面我们通过构造 WHERE 查询,导致 MySQL 判定候选的数据非常多,从而放弃使用索引,转而使用全表扫描。对应的代码在 interview-cases/case1_10/case2 at main · meoying/interview-cases (github.com),你可以查看里面的 README.md
其实整个案例非常简单。如果你执行这个 SQL: