在分析索引前,为了控制学习进度防止一口吃个大胖子
- 建议将数据库的数据抽象为全在内存中,不涉及磁盘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