索引为什么快要点
- 索引本质是一份按列排序的额外数据结构,存着指向原行的指针
- MySQL 最常用 B+Tree 索引,查询复杂度稳定在对数级
- 索引把随机离散读变成顺序定位,大幅减少磁盘 IO
- 索引要占额外存储空间,不是越多越好
- 写入时索引要同步维护,过多索引拖慢 INSERT / UPDATE
- 索引对 WHERE、JOIN 关联键、ORDER BY 都能加速
索引为什么快对照
| 有无索引 | 查找方式 | 随数据增长 |
|---|---|---|
| 无索引 | 全表逐行扫描 | 越来越慢 |
| 有索引 | 目录定位跳转 | 基本平稳 |
| 索引过多 | 写入维护变重 | 写变慢 |
避坑提醒:索引是拿「空间 + 写性能」换「读性能」。读多写少、大表查询慢,优先想索引;写密集表要克制。