您当前的位置: 首页 > 

拜托,别再问我什么是 B+ 树了

CSDN 程序人生 发布时间:2020-04-08 11:50:36 ,浏览量:4

作者|码海

来源|码海(ID:seaofcode)

每当我们执行某个 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             
关注
打赏
1688896170
查看更多评论
0.0518s