还不懂什么是B+树?看完这篇包你明白

B+树详解:索引加速的秘密
本文深入探讨了B+树作为数据库索引的原因,对比了哈希表、链表和跳表等数据结构,揭示了B+树如何满足精确查找、区间查找和排序需求。文章详细介绍了页分裂、页合并以及为何推荐使用自增ID作为主键,最后解释了如何根据B+树索引查找行记录。

前言

每当我们执行某个 SQL 发现很慢时,都会下意识地反应是否加了索引,那么大家是否有想过加了索引为啥会使数据查找更快呢,索引的底层一般又是用什么结构存储的呢,相信大家看了标题已经有答案了,没错!B+树!那么它相对于一般的链表,哈希等有何不同,为何多数存储引擎都使用它呢,今天我就来揭开 B+ 树的面纱,相信看了此文,B+ 树不再神秘,对你理解以下高频面试题会大有帮助!

  • 为啥索引常用 B+ 树作为底层的数据结构
  • 除了 B+ 树索引,你还知道什么索引
  • 为啥推荐自增 id 作为主键,自建主键不行吗
  • 什么是页分裂,页合并
  • 怎么根据索引查找行记录

本文将会从以下几个方面来讲解 B+ 树

  1. 定义问题
  2. 几种常见的数据结构对比
  3. 创建索引有哪些需要考虑的问题,怎样更高效地建立索引

定义问题

要知道索引底层为啥使用 B+ 树,得看它解决了什么问题,我们可以想想,日常我们用到的比较多的 SQL 有哪些呢。

假设我们有一张以下的用户表:

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL COMMENT '姓名',
  `idcard` varchar(20) DEFAULT NULL COMMENT '身份证号码',
  `age` tinyint(10) DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息';

一般我们会有如下需求:

1、根据用户 id 查用户信息

select * from user where id = 123;

2、根据区间值来查找用户信息

select * from user where id > 123 and id < 234;

3、按 id 逆序排列,分页取出用户信息

select * from user where id <  1234 order by id desc limit 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值