为什么要使用b+树作为索引数据结构
为什么要使用b+树作为索引数据结构
- 范围查询效率高:b+树所有的关键字节点都被连成一个有序的链表,可以很方便的顺序查询,范围查询效率高。
- 磁盘读写性能高:b+树的非叶子节点不存储数据,只存储关键字和指向子节点的指针,所以每个节点可以存储的关键字就增多,一次性读入内存的关键字也增多,树高度减少,磁盘I/O次数减少
- 查询效率稳定:任何关键字的查找都要从根节点到叶子节点,所以效率稳定。
- 适合顺序查找,遍历:b+树中,所有的叶子节点都是有序的,扫库只需要遍历叶子节点即可。
拓展:聚簇索引和非聚簇索引
聚簇索引
聚簇索引(Clustered Index)一般指的是主键索引(如果存在主键索引的话),聚簇索引也被称之为聚集索引。将数据存与索引放到一块,索引结构的叶子节点保存了行数据。
非聚簇索引
在非聚簇索引的叶子节点上存储的并不是真正的行数据,而是主键 ID,所以当我们使用非聚簇索引进行查询时,首先会得到一个主键 ID,然后再使用主键 ID 去聚簇索引上找到真正的行数据,我们把这个过程称之为回表查询。
将数据和索引分开存储,索引结构的叶子节点指向了数据对应的位置。
聚簇索引和非聚簇索引的区别主要有以下几个:
- 聚簇索引叶子节点存储的是行数据;而非聚簇索引叶子节点存储的是聚簇索引(通常是主键 ID)。
- 聚簇索引查询效率更高,而非聚簇索引需要进行回表查询,因此性能不如聚簇索引。
- 聚簇索引一般为主键索引,而主键一个表中只能有一个,因此聚簇索引一个表中也只能有一个,而非聚簇索引则没有数量上的限制。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix