在分析索引前,为了控制学习进度防止一口吃个大胖子

  • 建议将数据库的数据抽象为全在内存中,不涉及磁盘IO读写,忽略它的序列化与反序列化
  • 将数据与索引抽象为两个集合,先不要一步到位就去折腾红黑树
  • 可以把索引集合看成一个“瘦表”
class Student{
    String id;
    String name;
    String age;
}
List<Student> dates;
Collection<Map<name,rowId>> idx;
Closure findTableByIndex = {query->
    return dates.select{rowId in (idx.findAll{it.name==query}.map{it.value})}
}
findTableByIndex("john smith")

数据库的基本结构

索引的优劣

  • 通过空间换时间,节约了查询速度
  • 需要维护索引内部结构的排序,因此进行写入修改操作时,速度较慢

参考

  • https://tech.meituan.com/mysql-index.html