关于实战的问题
来源:3-7 密集索引和稀疏索引的区别

慕工程6478377
2019-02-12
输入正文
前面提了一个能否运用实例来讲解的问题,老师说需要调试源码,但是回复里面不好回复,这里新开一个问题。
使用实例讲解不一定要调试源码,比如可以使用一个具体的表为例子,如一个user表(字段为id、name、age),在插入一条数据之后索引如何变化。假设索引是3阶的B+tree,一开始没有数据,在插入一条数据(1,aa,10)时索引结构为:
---------
|key=1 |
--------
|1,aa,10|
----------
在插入一条(2,bb,11)的数据之后索引结构为:
--------------------
|key=1 | key=2 |
--------|--------|
|1,aa,10|2,bb,11|
------------------
如此类推,在插入第三条数据(3,cc,12)时:
--------------------------
|key=1 | key=2 | key=3 |
--------|---------|--------|
|1,aa,10|2,bb,11 |3,cc,12|
---------------------------
插入第四条数据(4,dd,13):
由于达到3阶的限制,发生节点分裂:
---------
|key=2 |
---------
/ \
V V
-------- -------------------------
|key=1 | |key=2 | key=3 |key=4 |
|--------| |------- -|-------|---------|
|1,aa,10| |2,bb,11 |3,cc,12|4,dd,13|
--------- ---------------------------
上面的图可能有误,但是大概就是这么个意思,并不需要去调试源码,只需要一个抽象的能解决问题的模型就可以了
1回答
-
翔仔
2019-02-13
同学好,你说的这个也是课程的思路,课程先介绍了B树是如何加入数据的,然后才引出的索引,也就是说因为索引也是基于B树的思想(B和B+的添加数据的思路都是差不多的),所以加数据也是这种模式,在讲解了这样添加的方式了之后,理解这些索引的存储方式并不难了,对于索引来讲,其他非主键的列都是附属的,主要关注主键的数据,所以方式也是基本一样的。。
00
相似问题