新片场视频素材,自己网站做优化的有权利卖么,在线设计外卖平台店招,ins做甜品网站数据库索引的原理#xff0c;为什么要用B树#xff0c;为什么不用二叉树#xff1f;
可以从几个维度去看这个问题#xff0c;查询是否够快#xff0c;效率是否稳定#xff0c;存储数据多少#xff0c;以及查找磁盘次数#xff0c;为什么不是二叉树#xff0c;为什么不… 数据库索引的原理为什么要用B树为什么不用二叉树
可以从几个维度去看这个问题查询是否够快效率是否稳定存储数据多少以及查找磁盘次数为什么不是二叉树为什么不是平衡二叉树为什么不是B树而偏偏是B树呢
为什么不是一般二叉树
如果二叉树特殊化为一个链表相当于全表扫描。平衡二叉树相比于二叉查找树来说查找效率更稳定总体的查找速度也更快。
为什么不是平衡二叉树呢
我们知道在内存比在磁盘的数据查询效率快得多。如果树这种数据结构作为索引那我们每查找一次数据就需要从磁盘中读取一个节点也就是我们说的一个磁盘块但是平衡二叉树可是每个节点只存储一个键值和数据的如果是B树可以存储更多的节点数据树的高度也会降低因此读取磁盘的次数就降下来啦查询效率就快啦。
那为什么不是B树而是B树呢
1B树非叶子节点上是不存储数据的仅存储键值而B树节点中不仅存储键值也会存储数据。innodb中页的默认大小是16KB如果不存储数据那么就会存储更多的键值相应的树的阶数节点的子节点树就会更大树就会更矮更胖如此一来我们查找数据进行磁盘的IO次数有会再次减少数据查询的效率也会更快。
2B树索引的所有数据均存储在叶子节点而且数据是按照顺序排列的链表连着的。那么B树使得范围查找排序查找分组查找以及去重查找变得异常简单。