B+树是不是有序?B+树和B-树的主要区别?B+树索引,一次查找过程?

B+树是有序的。

 

 

B+树和B-树的主要区别?

 

 

  • B-树内部节点是保存数据的;而B+树内部节点是不保存数据的,只作索引作用,它的叶子节点才保存数据。
  • B+树相邻的叶子节点之间是通过链表指针连起来的,B-树却不是。
  • 查找过程中,B-树在找到具体的数值以后就结束,而B+树则需要通过索引找到叶子结点中的数据才结束
  • B-树中任何一个关键字出现且只出现在一个结点中,而B+树可以出现多次。

 

 

假设有这么一个SQL:

 

 

select * from Temployee where age=32;

 

 

age加个一个索引,这条SQL是如何在索引上执行的?大家可以举例子画个示意图哈,比如二级索引树,

 

 

再画出id主键索引,我们先画出聚族索引结构图,如下:

 

 

因此,这条 SQL 查询语句执行大概流程就是酱紫:

 

 

  • 搜索idx_age索引树,将磁盘块1加载到内存,由于32<37,搜索左路分支,到磁盘寻址磁盘块2。
  • 将磁盘块2加载到内存中,在内存继续遍历,找到age=32的记录,取得id = 400.
  • 拿到id=400后,回到id主键索引树。
  • 搜索id主键索引树,将磁盘块1加载内存,在内存遍历,找到了400,但是B+树索引非叶子节点是不保存数据的。索引会继续搜索400的右分支,到磁盘寻址磁盘块3.
  • 将磁盘块3加载内存,在内存遍历,找到id=400的记录,拿到R4这一行的数据,好的,大功告成。
posted @ 2022-04-22 17:34  piaobodeyun0000  阅读(483)  评论(0编辑  收藏  举报