mysql索引数据结构
索引的原理:
索引的目的就是为了提高查询效率,本质上就是通过不断缩小想要获取数据的范围来筛选出最终要的结果,同时把随机事件变成顺序事件
数据结构
二叉树
插入的数据都是链表的形式,树的高度大,查询比较费时
红黑树
也是一种二叉查找树,但在每个节点上增加了一个存储为表示节点的颜色,通过对任何一条从根到叶子的路径上面各个作色方式的限制,确保没有一条路径会比其它路径长出两倍,这样就能保证解决平衡。
b树
B树和平衡二叉树稍有不同的是b树属于多叉树又叫平衡多路查找树,
叶节点具有相同的深度,叶节点的指针为空,
所有索引元素不重复
节点中的数据索引从左到右递增排列
b+树
是b+树升级版
非叶子节点不存储数据,只存储索引,可以放更多的索引
叶子节点包含所有索引字段
叶子节点用指针连接,提高区间访问的性能
特点:
在b树的基础上每个节点存储的关键字数更多,树的层级更少,查询数据更快,所有指针都存在叶子节点,所以每次找出的次数都相同查询速度更稳定
应用场景:
用在磁盘文件组织,数据索引和数据库索引
b树和b+树的区别
- b+和b树不同,b+数的非叶子节点保存关键字的指针,这样就使b+树每个节点能够保存的关键字就增加
- b+树叶子节点保存了父节点的所有关键字和指针,每个叶子节点的关键字从小到大连接
- b+树的根节点关键字数量和子节点个数相等
- b+树的非叶子节点值进行数据索引,不会存实际的关键字的指针,所有的数据地址必须要到叶子节点才能获取到,每次数据查询的次数都是一样的