B+Tree 数据结构
【B+Tree】索引是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接,是有序的(数据是存在非叶子节点(最底层才是存储数据,上层节点可以理解为检索目录))
【数据页】同层级是一个双向链表
【数据列】最底层数据页才是存储一行行数据,每一行数据都是一个单向链表
如下图:
(1). 首先每一行数据是存储在主键索引上的
(2). 非主键索引书上值存储是主键索引的ID,当需要非索引的其他字段时需要通过主键ID在主键索引查询出数据(这个过程叫做-回表) (using where)
(3). 查询的列包含在索引上,无需通过主键去回表查询这个过程叫做【索引覆盖】(using index)
(4). 查询的条件列保护在索引上,可以从索引列的值判断过滤这个过程叫做【索引下推】(Using index condition)
(5). 【最左前缀匹配原则】
(6). 主键长度越小,普通索引的叶子节点就越小,普通索引占用的空间也就越小
