二叉树-》AVL树-》红黑树-》B-树-》B+树
二叉树:每个节点最多只有两个子节点,左边的子节点都比当前节点小,右边的子节点都比当前节点大。
AVL树:树中任意节点的两个子树的高度差最大为1
红黑树:1、每个节点都是红色或者黑色。2根节点是黑色。3每个叶子节点都是黑色的空节点。
4红色节点的父子节点都必
须是褐色。5从任一节点到其每个叶子节点的所有路径都包含相同的黑色节点。
B-树:1、B-树的每个非叶子节点的子节点个数都不会超过D(这个D就是B-树的阶)2、所有的叶子节点都在同一层。3.所有节点关键字都是按照递增顺序排列。
B+树:1、非叶子节点不存储数据,只进行数据索引。2、所有数据都存储在叶子节点当中。3、每个叶子节点都存有相邻叶子节点的指针。4、叶子节点按照本身关键字从小到大排序。
MySQL的覆盖索引和回表
如果只需要在一颗索引树上就可以获取SQL所需要的所有列,就不需要再回表查询,这样查询速度就可以更快。
实现索引覆盖最简单的方式就是将要查询的字段,全部建立到联合索引当中。
user (PK id , name ,sex)
select count(name) from user; ->在name字段上建立一个索引。
select id , name ,sex from user; ->将name上的索引升级成为(name,sex)的联合索引