mysql索引
该图为一张数据库中的表对应的字段底层的数据图
首先当咱想要查找一条数据 一般在不建索引的条件下 如要查第3条数据 则电脑的磁盘io会消耗三次才能够找到对应的数据 这样子查找的效率太低 因此能够为所有的行数据字段建立对应的索引
在查找数据时 会从数据被存储对应的二叉树中找 利用二叉树的特性用遍历查找 与根节点对比 大于则网右子树递归查找 小于则往左递规查询 直到当前的节点值与想要查找的值相等
但在查找数据的同时 当数据的存储量达到一定值时 二叉树的深度变得很大 就算是利用递归查询当前数据对应数据表的地址值效率也变得很低 这样子就得把存储数据表的数据的数据结构变为B树 因为其在加如数据的同时会进行动态的改变树的深度 能根据设置的最大树深度来改变
但其MySQL在底层用的不是B树而是B+树 在所有的叶子节点中有指针互相指向
B树
B+树
它两的区别在于 B+树所有的数据都存储在叶子节点上 在其它的节点处只存储位于中间层的冗余数据
在叶子节点和叶子节点之间有着指针增加了区间的访问性能
最上层的根节点位于内存中 在查找时不会进行io操作 这样也能够增加查询数据的效率