MySQL索引结构 -- BTree索引

B+树是一种优化数据库查询性能的数据结构,通过减少IO次数提升查询速度。在3层B+树中,查找百万数据只需3次IO,对比逐条查找的百万次IO,性能提升显著。此外,还介绍了Hash索引、全文索引和R-Tree索引等不同类型的数据库索引技术。
摘要由CSDN通过智能技术生成

BTree索引

在这里插入图片描述

初始化介绍:

如图一颗B+树,浅蓝色表示磁盘块,每个磁盘块包括几个数据项(深蓝色)和指针(黄色)。

如磁盘块1包括数据项17和35,包含指针P1、P2、P3;P1表示小于17的磁盘块,P2表示在17-35之间的磁盘块,P3表示大于35的磁盘块。

真实的数据只存在于叶子节点,非叶子节点不存储真实数据,只存储指引搜索方向的数据项。

如17、35并不真实存在数据表中。

查找过程(用上图查找数据项29):

首先把磁盘块1由磁盘加载到内存,此时发生一次IO;在内存中用二分查找确定29在17和35之间,锁定磁盘块1的P2指针,因为内存时间非常短(相比磁盘的IO)可以忽略不计。

将磁盘块1的P2指向的磁盘块3由磁盘加载到内存,发生第二次IO;确定29在26和30之间,指向磁盘块3的P2指针。

将磁盘块3的P2指针指向的磁盘块8加载到内存,发生第三次IO,同时内存中做二分查找找到29。

查询结束,总计三次IO。

真实的情况

3层的B+树可以表示上百万的数据,如果上百万的数据查找只需要3次IO,性能提高将是巨大的,如果没有索引,每个数据项都要发生一次IO,那么总共需要上百万次IO。

总结:

减少IO次数可以减少查询时间,提高性能,那么怎么减少IO次数?
答案:增加树的广度而非深度。B+树的叶子节点可以多。

其他索引

  • Hash索引

  • full-text全文索引

  • R-Tree索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TandK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
>