索引

什么是索引

索引是一种数据结构,对数据库表中一列数据或者多列数据进行排序的一种结构,实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

索引的优缺点

索引能提高查询的速度

但是索引会降低更新表的速度

而且索引也会占据额外的磁盘空间

MySQL中索引底层的数据结构选择

当我们使用索引查询的时候不可能把整个索引全部加载到内存,只能逐一加载每个磁盘页,磁盘页对应索引树的节点

非关系型数据库MongoDB使用B树作为数据库索引

大部分关系型数据库,比如Mysql,则使用B+树作为索引

B树是一种多路平衡查找树,它的每一个节点最多包含K个孩子,k称为B树的阶。k的大小取决于磁盘页的大小

B树的每个节点都存k-1个元素和k个孩子

节点内部元素多一点也没有关系,仅仅是多了几次内存交互,只要不超过磁盘页的大小即可

B树在插入和删除节点的时候如果导致树不平衡,就通过自动调整节点的位置来保持树的自平衡

 

B+树是基于B树的一种变形,拥有者比B树更高的查询效率

有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点

在B+树中,每一个父节点的中的元素都出现在子节点中,是子节点的最大(或最小元素)

由于父节点的所有元素都出现在子节点,因此所有叶子节点包含了全量元素信息。并且每个叶

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值