B+树索引(1)之为什么需要索引

本文介绍了B+树索引在数据库中的应用,详细阐述了为何需要索引以及其在数据查找中的优势。通过分析单链表、双向链表和页目录结构,解释了主键和非主键查询的效率差异。当数据页增多时,没有索引的查询变得低效,因此引入索引以加速数据定位和检索。B+树索引通过二分法快速定位数据页,显著提高了查询速度,对于大数据量的存储系统至关重要。
摘要由CSDN通过智能技术生成

B+树索引(1)之为什么需要索引

前言

通过之前的文章我们知道InnoDB用于存储业务数据的页被称为数据页,而数据页的7大结构中的File Header结构中有上一页(FIL_PAGE_PREV)下一页(FIL_PAGE_NEXT)用来关联不连续的数据页,所以就可以形成如下所示的双向链表。

而每个数据页中的记录可以通过主键值从小到大通过记录头的next_record属性形成一个单链表,为了高效查询每个单链表又被分为若干组,每个组的最大主键值的偏移量就会组成一个页目录,通过主键查找某条记录就可以采用二分法快速定位到某个对应的槽,快速查找,结构图如下所示。

没有索引如何查找

查找单个数据页

以主键为条件查找

以主键为条件查找是最简单的查询方式,因为在单个数据页中记录就是按照主键从小到大的顺序进行排列的,我们可以很容易通过页目录然后二分查找定位到具体的槽,遍历整个组就可得到需要查找的记录。

以非主键为条件查找

因为数据页仅仅是根据主键的大小进行排序并且形成页目录,而非主键并没有类似页目录的结构,如果单个数据页中以非主键为条件查询那么只能从最小记录infimum开始遍历整个单链表对比记录的真实数据进行查询,效率低。

查找多个数据页

查询多个数据页显然比单个数据页更加麻烦,查找步骤分为两个

  • 先需要定位到某个数据页。

  • 再从某个数据页中定位到符合条件的记录。

不论是以主键条件查找还是以非主键条件查找想要定位到具体的数据页都是非常消耗时间的,所以这里需要一种高效的检索方法就是索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值