没有合适的资源?快使用搜索试试~ 我知道了~
B+树聚簇索引 精讲开发培训
0 下载量 138 浏览量
2022-12-19
19:33:10
上传
评论
收藏 636KB DOCX 举报
温馨提示
试读
13页
索引,可能让好很多人望而生畏,毕竟每次面试时候 MySQL 的索引一定是必问内容,哪怕先撇开面试,就在平常的开发中,对于 SQL 的优化也而是重中之重。 可以毫不夸张的说,系统中 SQL 的好坏,是能直接决定你系统的快慢的。但是在优化之前大家是否想过一个问题?那就是:我们优化的原则是什么?优化SQL的理论基础是什么? 虽然说实践出真知,但是我更相信理论是支撑实践的基础,因为我们不可能毫无目的的去盲目的实践,因为这样往往事倍功半。 所以说了这么多只想告诉大家,在真正的开始索引优化之前,我们需要彻底搞明白索引的原理。这样再谈优化你将觉得更丝滑~ 1、索引的本质 索引的本质是一种排好序的数据结构。这个我相信其实大家并不陌生,因为谈到索引很多人自然而然的就会联想到字典中的目录。 没错,这样的类比是很形象的,但是如果再往深处说,恐怕很多小伙伴就有点张口结舌了,那既然你已经知道了索引的本质,那么您就已经有了看这篇文章的基础,相信读文本文的你,一定会对索引的原理有一个全新的了解。 2、索引的分类
资源推荐
资源详情
资源评论
索引,可能让好很多人望而生畏,毕竟每次面试时候 MySQL 的索引一定是必问内容,哪怕先撇开面试,就在平常的开发中,对于 SQL 的优化也而是重中之
重。
可以毫不夸张的说,系统中 SQL 的好坏,是能直接决定你系统的快慢的。但是在优化之前大家是否想过一个问题?那就是:我们优化的原则是什么?优化 SQL
的理论基础是什么?
虽然说实践出真知,但是我更相信理论是支撑实践的基础,因为我们不可能毫无目的的去盲目的实践,因为这样往往事倍功半。
所以说了这么多只想告诉大家,在真正的开始索引优化之前,我们需要彻底搞明白索引的原理。这样再谈优化你将觉得更丝滑~
1、索引的本质
索引的本质是一种排好序的数据结构。这个我相信其实大家并不陌生,因为谈到索引很多人自然而然的就会联想到字典中的目录。
没错,这样的类比是很形象的,但是如果再往深处说,恐怕很多小伙伴就有点张口结舌了,那既然你已经知道了索引的本质,那么您就已经有了看这篇文章的
基础,相信读文本文的你,一定会对索引的原理有一个全新的了解。
2、索引的分类
在数据库中,索引是分很多种类的(千万不要狭隘的认为索引只有 B+ 树,那是因为我们平时使用的基本都是 MySQL)。而不同的种类很显然是为了应付不
同的场合,那索引到底有那些种类呢?下面就让我们来大致的了解下。
2.1、Hash 索引
Hash 索引是比较常见的一种索引,他的单条记录查询的效率很高,时间复杂度为 1。但是,Hash 索引并不是最常用的数据库索引类型,尤其是我们常用的 Mysql
Innodb 引擎就是不支持 hash 索引的。主要有以下原因:
�
Hash 索引适合精确查找,但是范围查找不适合
�
* 因为存储引擎都会为每一行计算一个 hash 码,hash 码都是比较小的,并且不同键值行的 hash 码通常是不一样的,hash 索引中存储的就是 Hash 码,hash
码彼此之间是没有规律的,且 Hash 操作并不能保证顺序性,所以值相近的两个数据,Hash 值相差很远,被分到不同的桶中。这就是为什么 hash 索引只能进
行全职匹配的查询,因为只有这样,hash 码才能够匹配到数据。
对于 hash 索引,小伙伴们只需要了解到这里就可以了。
2.2、二叉树
另外,常见的索引使用的数据结构是树结构,首先我们来介绍下最经典的二叉树。
先来介绍下二叉树的特点:
�
1. 二叉树的时间复杂度为 O(n)
�
�
1. 一个节点只能有两个子节点。即度不超过 2
�
�
1. 左子节点 小于 本节点,右子节点 大于 本节点
�
首先来看一下二叉树的样子
但是在极端情况下会出现链化的情况,即节点一直在某一边增加。如下图
二叉树中,有一种特殊的结构——平衡二叉树,平衡二叉树的特点:
�
1. 根节点会随着数据的改变而变更
�
�
1. 数据量越多,遍历次数越多,IO 次数就越多,就越慢(磁盘的 IO 由树高决定)
�
2.4、B 树(二三树)
了解了二叉树之后,可以进一步谈一下什么是 B 树了。B 树大概是这样子的:
从 B 树的结构图中可以看到每个节点中不仅包含数据的 key 值,还有 data 值。
而每页的存储空间是有限的,如果 data 比较大,会导致每个节点的 key 存储的较少,当数据量较大的时候,同样会导致 B 树很深,从而增加了磁盘 IO 的次
数,进而影响查询效率。
好了,说到这里,常见的索引的种类也说完了,上面的内容仅仅是作为一个铺垫,下面我们正式开始 MySQL 的 B+ 树。
剩余12页未读,继续阅读
资源评论
浮生(FS)
- 粉丝: 322
- 资源: 28
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功