数据库--索引

本文介绍了数据库索引的概念,将索引比喻为书的目录,帮助快速定位数据。重点探讨了B树和B+树的内部结构,解释了B+树的优势在于其优化的节点分布和链表连接的叶子节点,使得数据查找更为高效。相对于线性表、二叉搜索树和哈希表,B+树更适合数据库索引,尤其在范围查找中表现优秀。
摘要由CSDN通过智能技术生成

什么是索引

  • 索引可以想象成一本书的目录
  • 我们为了能够快速定位到某一篇文章 可以通过查看目录, 定位到该文章所在的页数, 从而从一本厚厚的书中精准的找到某一页

索引的内部数据结构(重点)

  • 索引的内部结构依托于B+树
  • 谈到B+树我们要先看看B树是什么

-B树

B树是一种N叉搜索树
形如下图
在这里插入图片描述
(画的不好看 见谅哈~~)

  • B树的根节点中不只有一个数据, 而是可以存放多个数据, 这多个数据被分为多段数据范围

  • 好比上图的根节点 50 100 200

  • 被分为 x < 50 , 50 < x < 100 , 100 < x < 200, x > 200
    这四个范围

  • 这四个范围衍生出四个子节点

  • 而每个子节点中也可以有多个数据, 这多个数据又被分为多个范围, 多个范围又衍生出多个子节点

这就是B树

B+树

B+树就是在B树的基础上做了些优化
即 形如下图

在这里插入图片描述

B+树和B树的区别

  1. 父节点里面的值会作为子节点中最大的值(也可以是最小的值)出现, 这样做所有的叶子结点就包含了整棵树数据的全集
  2. 如果把所有叶子结点用链表连接起来, 这样查找会比原来更高效
  3. 每一行数据库中的其他信息, 仅仅存放在叶子结点上(就是上图用红圈圈起来的数字), 非叶子结点仅包含索引列数据, 这样非叶子结点所占的空间就小了 就可以放到内存中随时读取, 比从磁盘上要方便得多.

和其他的数据结构相比为什么B+树更适合数据库呢?

用于查找数据的数据结构有很多 比如 线性表, 二叉搜索树, 哈希表, 那为什么我们要使用B+树来存放数据库的索引呢?

  • 首先线性表效率太低, 不考虑
  • 二叉搜索树的效率是和树的高度密切相关的, 如果树过高的话效率比较低
  • 哈希表只适合值确定的查找, 比如我想查找年龄=18的人, 但是不适合范围查找, 比如我想查找年龄在18~28之间的人, 哈希表就不太方便
  • 所以B+树才是最好的选择
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值