【MySQL数据库】六、MyISAM,InnoDB存储引擎索引详解

本文深入探讨了MySQL数据库索引底层数据结构,重点介绍了B+树,并对比了MyISAM和InnoDB存储引擎的索引实现。B+树在插入时进行排序,有效提高了查询效率。MyISAM索引实现中,数据和索引分开存储,而InnoDB的索引结构使得数据与索引聚集,提供了快速的主键查找性能。
摘要由CSDN通过智能技术生成

一、MySQL数据库索引底层数据结构详解

建立索引就是建立数据结构存储数据,让其有序,那么排序的时机应该怎么选择:

  • 如果查询前进行排序,那么查一次,排序一次,那么排序的效率要插入到查询中,时间复杂度为:排序时间+查找时间=O(n)+O(logxn),比顺序排序的效率都要低
  • 在插入数据时排序,在插入数据时,进行排序,为O(n),那么查询效率为O(logxn)

MySQL数据库的索引设计思想就是在插入时进行排序,那么MySQL索引使用的数据结构是一种特殊的二叉排序(查找、搜索)树BST,称为B+树,是一种多路树。中序遍历有序。在插入时进行结点调整,使其有序。

B+树特点多路树,非叶子节点放关键字进行排序,叶子节点以链表的方式串起来。

下面我们详细讨论索引的B+树。

(一)BST树,平衡二叉树AVL、红黑树,B(B-)树,B+树简介

1. BST二叉排序树

【概念:】

二叉搜索树BST(binary sort tree)以一颗二叉树来组织的,每个节点是一个对象,包含left指向节点的左孩子,right指向节点的右孩子,p指向双亲,key表示键值。

【目的:】

为了提高查找的性能,查找在平均和最坏的情况下都是logn,接近二分查找,查找的最大次数为树的高度。

【特点:】

  • 每个节点的值大于其任意左侧子节点的值,小于其任意右节点的值,没有值相等的节点
  • 中序遍历有序

在这里插入图片描述
【缺陷:】

二叉搜索经过多次插入或删除后,会导致二叉搜索树失去平衡变为有n个节点的线性链:

在这里插入图片描述

此时查找的效率变得很低。

2. 平衡二叉树AVL

在二叉搜索树上添加平衡算法得到平衡二叉树AVL带有平衡条件(节点的左右子树高度差不超过1)的二叉查找树,一般用平衡因子差值判断是否平衡并通过旋转来实现平衡。

特点:

  • 左右子树高不超过1,是严格的平衡的二叉树。
  • 执行插入,删除操作时,如果不满足平衡条件,需要通过旋转来保持平衡,耗费时间。
  • 适用于插入删除次数少,查找多的情况。

在这里插入图片描述
不超过1表示可以取:0,1

局限性:

维护这种严格高度平衡的二叉树,付出的代价比效率还低,所以应用不多,适用于查找多,插入删除少的情况。一般应用于Windows进程地址空间的管理。

3. 红黑树RBT

AVL严格平衡二叉树实现耗费时间多,所以出现了弱平衡二叉树,基于二叉查找树的红黑树。

在每一个节点增加一个表示节点颜色的存储位,可以是红色或黑色。通过对任何一条从根到叶子的路径上各个节点着色的方式的限

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值