零基础学数据库索引,B树
在这里感谢鲁班学院-周瑜老师,图灵学院周瑜老师,我的相关知识都是再B站上,观看有关视频学到的;
-
为什么要使用索引?
- 进行数据库查询时,需要把数据从磁盘加载内存,由于程序的局部性原理,所以数据加载时不上一条一条加载,而是一页一页加载;
- 一页大小是16K,也就可以加载好多数据,使用链表将其连接,而数据越多链表越长,查询效率越低,所以就需要构建页内索引,来提高查询效率;
- 当然要加载的数据可能不止一页,那么想要根据带查询的数据直接定位到页,也就需要构建页间索引;层层构建索引,而最外层的索引页就是数据索引;学过数据结构的同学可能会恍然发现这是一棵B+树;
- 下图便是一个数据索引实例,从下往上看:每页有两条数据 且页间有指针构连接,上一级便是页索引,再上一级便是“页索引”页的索引;
- 细心的同学可能会发现在最底层的页中,没有我说的业内索引;其实是使用了数据本身(数据索引键作为页内索引(key),其他字段作为索引内容(value)),我们将这种索引和数据聚集在一起的索引形式称为聚集性索引;
- 而非聚集性索引是下面这个样子的: