mysql中的B+树索引

mySQL中有3类索引

  1. B+树索引
  2. 自适应hash索引
  3. 全文索引
    本文讲的是B+树索引,其他两种索引以后有机会再写。

概念

B+树索引,顾名思义就是用B+树结构来存储索引的数据,至于B+树的定义这里就不加赘述了。要注意的一点是B+树索引的叶子节点存储的并不是一条记录,而是一个数据页。索引数据时,是先通过索引找到记录所在的页,然后把页加载到内存中,找到页中的记录。
在MySQL中B+树索引可以分为两种:聚集索引和辅助索引

聚集索引

聚集索引是由表主键作为键值构建出来的B+树,一张表只有一个聚集索引。B+树的非叶子节点存放的是键值(即主键的值)以及子节点的地址,叶子节点的页中存放着表记录的数据,而且这些叶子节点是根据主键的顺序排列的,这里的顺序排列是逻辑顺序的。每个叶子节点维护着前后节点的指针,由此叶子节点构成了一个双向链表,这个链表是按照主键顺序排列的。如图所示:
这里写图片描述
由于聚集索引中存放表的记录数据,且都是按顺序存放的,所以用聚集索引进行范围查询,排序的性能特别好。

辅助索引

mysql中非主键构建的B+树索引都是辅助索引。辅助索引与聚集索引主要的区别在于辅助索引的叶子节点不存放表的记录数据,叶子节点中存放的是键值和书签。这里解释一下书签的意思,在mysql中书签中存放着改叶子节点的键值对应的主键值。因此,用辅助索引的查询过程如下:
1. 通过辅助索引查找到子节点。
2. 通过子节点的书签查找到主键值。
3. 那主键值去聚集索引查找具体的记录数据。

猜你喜欢

转载自blog.csdn.net/qqqq0199181/article/details/80752756