[MySQL] 索引中的b树索引
程序员文章站
2022-05-23 19:26:49
1.索引如果没有特别指明类型,一般是说b树索引,b树索引使用b树数据结构存储数据,实际上很多存储引擎使用的是b+树,每一个叶子节点都包含指向下一个叶子节点的指针,从而方便叶子节点的范围遍历 2.底层的存储引擎也可能使用不同的存储结构,比如NDB集群存储引擎使用了T树,InnoDB使用的是B+树 3. ......
1.索引如果没有特别指明类型,一般是说b树索引,b树索引使用b树数据结构存储数据,实际上很多存储引擎使用的是b+树,每一个叶子节点都包含指向下一个叶子节点的指针,从而方便叶子节点的范围遍历
2.底层的存储引擎也可能使用不同的存储结构,比如ndb集群存储引擎使用了t树,innodb使用的是b+树
3.myisam使用前缀压缩技术使得索引更小,innodb按照原数据格式进行存储,myisam通过数据的物理位置引用被索引的行,innodb根据主键引用被索引的行
4.b树意味着所有的值是按照顺序存储的,并且每一个叶子页到根的距离相同
5.b树索引能够加快访问数据的速度,存储引擎不需要再进行全表扫描来获取需要的数据,取而代之的是从索引的根节点开始进行搜索,根节点的槽中存放了指向子节点的指针,存储引擎根据这些指针向下层查找.通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点.树的深度和表的大小直接相关
6.叶子节点比较特别,他们的指针指向的是被索引的数据,而不是其他的节点页
7.b树对索引列是顺序存储的,所以很适合查找范围数据.
8.索引对多个值进行排序的依据是,定义索引时列的顺序,比如联合索引key(a,b,c),这三个列的顺序
9.上面的联合索引对以下查询语句有效
全值匹配
where a=x and b=x and c=x
最左前缀
where a=x
匹配列前缀
where a like x%
匹配范围值
where a>x and a<x
精确匹配某一列范围匹配另一列 where a=x and b like x%
10.因为索引树的节点是有序的,可以用于查询中的order by操作,如果可以按照某种方式查到值,那么也可以按这种方式排序