开篇:为什么数据库需要索引?
想象你手里有一本 800 页的书,要找"B+树"这个词出现在哪一页。如果没有目录,你只能从第 1 页翻到第 800 页——这就是全表扫描。而如果书后面有一份按字母排序的索引,你翻到"B"那一栏,瞬间就能定位到页码——这就是索引查找。
MySQL 里的索引做的事情完全一样:用一种有序的数据结构,减少磁盘 I/O 次数,加快查询速度。
索引的好处显而易见:
- 把"逐页翻书"变成"查目录",大幅降低磁盘 I/O
- 唯一索引还能顺带保证数据不重复
- 对 ORDER BY、GROUP BY 友好,减少排序开销
- 多表 JOIN 时,连接字段有索引可以大幅加速匹配