暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
6快速查询的秘籍 —— B+ 树索引(02).pdf
158
32页
18次
2022-03-14
免费下载
B+索引
标签 MySQL怎样运⾏的
前边我们详细唠叨InnoDB据⻚的7个组成部分,知道了各个
据⻚可以组成⼀个双向链表,⽽每个数据⻚中的记录会按照主键值从
⼩到⼤的顺序组成⼀个单向链表,每个数据⻚都会为存储在它⾥边⼉
的记录⽣成⼀个⻚⽬录,在通过主键查找某条记录的时候可以在⻚⽬
录中使⽤⼆分法快速定位到对应的槽,然后再遍历该槽对应分组中的
记录即可快速找到指定的记录(如果你对这段话有⼀丁点⼉疑惑,那
么接下来的部分不适合你,返回去看⼀下数据⻚结构吧)。⻚和记录
的关系示意图如下
其中a、⻚b、⻚c ... n 这些⻚可以不在物理结构上相连,只
通过双向链表相关联即可
没有索引的查
本集的主题是索引,在正式介绍索引之前,我们需要了解⼀下没有索
引的时候是怎么查找记录的。为了⽅便⼤家理解,我们下边先只唠叨
搜索条件为对某个列精确匹配的情况,所谓精确匹配,就是搜索条件
中⽤等于=接起的表达式,⽐如这样
SELECT [名列] FROM WHERE = xxx;
在⼀个⻚中的查
假设⽬前表中的记录⽐较少,所有的记录都可以被存放到⼀个⻚中,
在查找记录的时候可以根据搜索条件的不同分为两种情况
以主键为搜索条件
这个查找过程我们已经很熟悉了,可以在⻚⽬录中使⽤⼆分法
快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可
快速找到指定的记录。
以其他列作为搜索条件
对⾮主键列的查找的过程可就不这么幸运了,因为在数据⻚中
并没有对⾮主键列建⽴所谓的⻚⽬录,所以我们⽆法通过⼆分
法快速定位相应的槽。这种情况下只能从最⼩记录开始依次遍
历单链表中的每条记录,然后对⽐每条记录是不是符合搜索条
件。很显然,这种查找的效率是⾮常低的。
在很多⻚中查找
⼤部分情况下我们表中存放的记录都是⾮常多的,需要好多的数据⻚
来存储这些记录。在很多⻚中查找记录的话可以分为两个步骤:
1. 定位到记录所在的⻚
2. 从所在的⻚内中查找相应的记录。
在没有索引的情况下,不论是根据主键列或者其他列的值进⾏查找,
由于我们并不能快速的定位到记录所在的⻚,所以只能从第⼀个⻚沿
着双向链表⼀直往下找,在每⼀个⻚中根据我们刚刚唠叨过的查找⽅
式去查找指定的记。因为要遍历所有的数据⻚,所以这种⽅式显然
of 32
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜