索引

75 阅读1分钟

1.辅助索引/二级索引

只保存索引列和对应的主键id ,需要2次IO 回表查找聚集索引里面的数据 一个索引对应一个B+树

2.MRR-多范围读取

回表查找数据是通过随机IO读取比顺序IO要慢,回表数据越多,可能不会走索引,会走全表扫描 为了解决上述问题,二级索引通过读取多个范围,每个范围的二级索引id排好序再汇总查找,排序 在CPU里面速度很快,减少随机IO

3.联合索引

4.自适应哈希索引

保存热数据缓存在内存里面,通过hash索引快速查找

5.全文检索-倒排索引

6.索引的代价

  • 空间上的代价:一个B+树占据一个空间
  • 时间上的代价:增删改的时候需要维护索引,索引越多性能越慢
  • 一张表在6-7个左右
  • 设计原则:索引列的类型尽量小,索引的选择性和离散型(值越不一样越好),前缀索引(前20个字符)