MySql原理 - 索引

2020-05-19  本文已影响0人  你与时光终会散

1.索引

1.1 索引概述

MySQL官方对索引的定义:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库还维护着满足特定查找算法的数据结构,这些数据结构以某种引用(指向)数据,这样就可以再这些数据结构上实现高级查找算法

1.2 索引优势劣势

优势:

劣势:

1.3 索引结构

索引是MySQL的存储引擎层中实现的,而不是在服务器层,所以每种存储引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的索引类别

四种索引

我们平常所说的索引,如果没有特别说明,都是指B+树(多路搜索树,并不一定是二叉树)结构组织的索引。其中聚集索引、复合索引、前缀索引、唯一索引默认都是使用B+tree索引。

1.3.1 BTree结构

BTtee又叫多路平衡搜索树,一颗m叉的BTree特性如下

以5叉BTree为例,key的数量:ceil(5/2)-1 <= n <= 5-1,所有2<=n<=4,当n>4时,中间节点分裂到父节点,两边节点分裂

image.png

该BTree与二叉树相比,查询效率更高,因为对于相同的数据量来说,BTree的层级结构比二叉树小,因此搜索速度快。

1.3.2 B+Tree结构

B+Tree为BTree的变种,B+Tree与BTree的区别如下

image.png

由于B+Tree只有叶子节点保存key信息,查询任何key都要从root走到叶子,所以B+Tree的查询效率更加稳定

1.3.3 MySQL中的B+Tree

MySQL索引数据结构对经典的B+Tree进行了优化,在B+Tree的基础上,增加一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能。

image.png
1.4 索引的分类
1.5 索引的创建原则
上一篇下一篇

猜你喜欢

热点阅读