MySQL的索引理解
文章摘要
- 主要对数据库MySQL索引出现的一些重难点的理解。
1.索引的结构
- MySQL的索引结构是基于B 树实现的,为的就是加快搜索。
1.1为什么索引要选择B 树这种数据结构?
- B 树高度矮,每个树节点可以存储大量的索引数据,可以极大减少IO次数。
- 为什么不用二叉搜索树,因为树太高了,IO次数多开销大,父节点和子节点可能不在一个磁盘。
- 为什么不用跳表,跳表其实和B 树的效率差不多,但是高度还是比较高,每层的链表存储的结点比较少,涉及到IO次数较多,但是Redis就没有这样的问题,Redis是基于内存的数据库,不存在IO的问题。
2.索引的分类
- 索引分类,一般分为主键索引和非主键索引。
- 主键索引:不存在回表的情况,叶子结点存储着整个行的数据,是聚集索引。
- 非主键索引:存在回表的情况,叶子结点存储着索引 主键,以便于回表查询其他信息,是非聚集索引。
3.覆盖索引
- 覆盖索引是为了减少回表的索引,当非主键索引的叶子结点包含了需要查询的数据就不需要进行回表查询。
4.前缀索引
- 前缀索引是指联合索引,前缀是指匹配规则,从最左边往右边进行匹配。所以往左边的索引的配置也有一些规范,尽可能小,尽可能不重复等。
5.索引下推
- 索引下推可以减少查询表的次数,联合索引(judge1,judge2),当按照judge1进行筛选,当有judge2进行判断的时候,MySQL可以进行下推,减少过滤judge2筛选。
6.什么时候会重建索引
- 存在表的数据减少了一半,表的大小依旧没变?因为还会存在很多的空节点,这些节点没有数据但可以用,表示存在一些空的索引。
- alter table T engine=InnoDB进行重建索引,可以消除一些空的索引。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggfjbb
系列文章
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01