1.辅助索引/二级索引
只保存索引列和对应的主键id ,需要2次IO 回表查找聚集索引里面的数据 一个索引对应一个B+树
2.MRR-多范围读取
回表查找数据是通过随机IO读取比顺序IO要慢,回表数据越多,可能不会走索引,会走全表扫描 为了解决上述问题,二级索引通过读取多个范围,每个范围的二级索引id排好序再汇总查找,排序 在CPU里面速度很快,减少随机IO
3.联合索引
4.自适应哈希索引
保存热数据缓存在内存里面,通过hash索引快速查找
5.全文检索-倒排索引
6.索引的代价
- 空间上的代价:一个B+树占据一个空间
- 时间上的代价:增删改的时候需要维护索引,索引越多性能越慢
- 一张表在6-7个左右
- 设计原则:索引列的类型尽量小,索引的选择性和离散型(值越不一样越好),前缀索引(前20个字符)