MySQL 的索引,其实就是一套挺精妙的数据结构+算法组合拳。你以为它只是建建 B+树那么简单?其实背后逻辑多着呢。索引优化说白了就是在性能和存储之间找平衡,而这个过程,少不了搞清楚B+树、哈希表、跳表这些数据结构怎么跟查询效率挂钩。
数据库优化的痛点,多都藏在“索引怎么建”这个问题里。用对了,查得飞快;用错了,全表扫哭你。MySQL 索引底层的结构其实跟你学过的数据结构知识息息相关,尤其是你用 InnoDB 时,B+树、页分裂、最左匹配这些都绕不开。
链接里这个资源合集,讲得还挺系统的。是这篇,把索引的存储结构和查询过程捋得挺清楚,还有一些案例,比如为什么某些索引不走、联合索引怎么踩坑。
另外像这个 PPT,图多,讲算法的时候直观多了,适合平时复盘的时候看看。你要是想从原理学起,把索引学明白,建议几个文档都翻一翻,尤其是和Java、Dart结合的那些,扩展性也不错。
如果你正好在排查慢查询,或者想深挖数据库的性能瓶颈,可以把这些文档存着,闲的时候刷一刷,收益还挺大。