前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >[MySQL] 索引中的b树索引

[MySQL] 索引中的b树索引

作者头像
唯一Chat
发布于 2019-09-10 03:06:15
发布于 2019-09-10 03:06:15
1.4K0
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

1.索引如果没有特别指明类型,一般是说b树索引,b树索引使用b树数据结构存储数据,实际上很多存储引擎使用的是b+树,每一个叶子节点都包含指向下一个叶子节点的指针,从而方便叶子节点的范围遍历

2.底层的存储引擎也可能使用不同的存储结构,比如NDB集群存储引擎使用了T树,InnoDB使用的是B+树

3.MyISAM使用前缀压缩技术使得索引更小,InnoDB按照原数据格式进行存储,MyISAM通过数据的物理位置引用被索引的行,InnoDB根据主键引用被索引的行

4.b树意味着所有的值是按照顺序存储的,并且每一个叶子页到根的距离相同

5.b树索引能够加快访问数据的速度,存储引擎不需要再进行全表扫描来获取需要的数据,取而代之的是从索引的根节点开始进行搜索,根节点的槽中存放了指向子节点的指针,存储引擎根据这些指针向下层查找.通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点.树的深度和表的大小直接相关

6.叶子节点比较特别,他们的指针指向的是被索引的数据,而不是其他的节点页

7.b树对索引列是顺序存储的,所以很适合查找范围数据.

8.索引对多个值进行排序的依据是,定义索引时列的顺序,比如联合索引key(a,b,c),这三个列的顺序

9.上面的联合索引对以下查询语句有效

全值匹配

where a=x and b=x and c=x

最左前缀

where a=x

匹配列前缀

where a like x%

匹配范围值

where a>x and a<x

精确匹配某一列范围匹配另一列 where a=x and b like x%

10.因为索引树的节点是有序的,可以用于查询中的order by操作,如果可以按照某种方式查到值,那么也可以按这种方式排序

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL索引的原理,B+树、聚集索引和二级索引的结构分析
索引是一种用于快速查询行的数据结构,就像一本书的目录就是一个索引,如果想在一本书中找到某个主题,一般会先找到对应页码。在mysql中,存储引擎用类似的方法使用索引,先在索引中找到对应值,然后根据匹配的索引记录找到对应的行。
码农架构
2020/10/29
3.2K0
MySQL索引的原理,B+树、聚集索引和二级索引的结构分析
为什么 MySQL 使用 B+ 树
首先需要澄清的一点是,MySQL 跟 B+ 树没有直接的关系,真正与 B+ 树有关系的是 MySQL 的默认存储引擎 InnoDB,MySQL 中存储引擎的主要作用是负责数据的存储和提取,除了 InnoDB 之外,MySQL 中也支持 MyISAM 作为表的底层存储引擎。
大忽悠爱学习
2023/02/26
4580
为什么 MySQL 使用 B+ 树
「Mysql索引原理(二)」Mysql高性能索引实践,索引概念、BTree索引、B+Tree索引
1. 索引是什么 2. 索引的类型 3. BTree索引 概念 举例:以5阶数为列 4. B+Tree索引 概念 5阶B+Tree插入举例 B+树的优点 可以使用B+树索引的查询类型 B+Tree索引的限制
源码之路
2020/09/03
1.3K0
【MySQL(2)| MySQL索引机制】
索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。
周三不加班
2019/09/03
1.1K0
【MySQL(2)| MySQL索引机制】
[日常] 高性能MySQL-索引
1.mysql的索引工作类似一本书的目录部分,想找某个特定主题,先查找书的目录部分,找到对应的页码 2.ORM工具只能生成基本的合法的查询 3.索引是在存储引擎层实现的,不是服务器层 4.B-tree就是指的B树,多叉平衡查找树,很多存储引擎使用的b+树,降低磁盘I/O操作,将随机i/o变成顺序i/o 5.b树意味着所有的值是按顺序存储的,每个叶子页到根的距离相同,叶子页存储了指向下一个叶子页的指针 6.存储引擎不需要全表扫描,从索引的根节点开始进行搜索 7.b树索引还可以用于order by和group by 操作 8.只有memory引擎显式支持哈希索引,只支持等值比较=查询速度非常快 9.在b树基础上创造伪哈希索引,自定义个哈希函数加个字段存储,查询语句类似:select * from test where crc_32('haha') and content='haha' 10.三星评价系统:一星 索引将相关记录放一起;二星 数据顺序和查找顺序一致;三星 索引中包含了全部查询列 11.扩展:增加个元数据信息表,例如"哪个用户的信息存储在哪个表中"
唯一Chat
2019/09/10
7820
B-Tree索引案例分析
如果将数据放入磁盘中,由于指令的执行速度远远超过磁盘的读写速度,因此控制运行时间的几乎都是磁盘访问次数。那么写一个复杂的程序来将磁盘访问次数降低到一个很小的常数是很有意义的。 B-Tree:所有的数据项都存储在树叶上,每一个叶子节点都包含指向下一个叶子节点的指针,从而方便叶子节点的范围遍历。B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子页(每个叶子页包含多个树叶)到根的距离相同,很适合查找范围数据。( InnoDB使用的是B+Tree)
用户7705674
2021/10/07
4270
【肝帝一周总结:全网最全最细】☀️Mysql 索引数据结构详解与索引优化☀️《❤️记得收藏❤️》
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储数据结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
苏州程序大白
2021/09/06
8260
彻底搞懂MySQL的索引
MyISAM和InnoDB是MySQL最常用的两个存储引擎,本文将进行详尽的介绍和对比。对于MySQL其余几种存储引擎,请读者自行搜索学习。
全菜工程师小辉
2019/08/16
9010
详述 MySQL 中 InnoDB 的索引结构以及使用 B+ 树实现索引的原因
在 MySQL 的众多存储引擎中,InnoDB 是最常用的存储引擎,也是 MySQL 现阶段唯一免费支持事务机制的存储引擎。在本文中,我们以 InnoDB 为例,介绍 MySQL 的索引结构以及其使用 B+ 树实现索引的原因。
CG国斌
2021/12/07
1.2K0
详述 MySQL 中 InnoDB 的索引结构以及使用 B+ 树实现索引的原因
MySql进阶索引篇01——深度讲解索引的数据结构:B+树
索引是存储引擎中一种用于快速找到数据的存储结构,他就像《新华字典》的目录,可以使我们查每个字的速度大大提升。
半旧518
2022/10/26
2.3K0
MySql进阶索引篇01——深度讲解索引的数据结构:B+树
150道MySQL高频面试题,学完吊打面试官--聚簇索引与非聚簇索引
本专栏为150道MySQL大厂高频面试题讲解分析,这些面试题都是通过MySQL8.0官方文档和阿里巴巴官方手册还有一些大厂面试官提供的资料。 MySQL应用广泛,在多个开发语言中都处于重要地位,所以最好都要掌握MySQL的精华面试题,这也是面试官最喜欢问的,现在面试官在面试的时候更关心的是某个技术点的深度,所以专栏的内容也会从底层开始讲解,本专栏会一直不断的进行更新,欢迎大家一起交流学习。
小白的大数据之旅
2024/11/20
660
150道MySQL高频面试题,学完吊打面试官--聚簇索引与非聚簇索引
面试:mysql最全索引与优化详解
mysql 是我们最常用的数据存储的的程序,它是关系数据库的代表,可以直接服务于我们的常规业务,是我们不能离开的数据存储器,对于关系操作复杂的业务,具有很强的优势。
Tim在路上
2020/08/04
7360
阿里二面:MySQL索引是怎么支撑千万级表的快速查找?
在 MySQL 官方提到,改善操作性能的最佳方法 SELECT 在查询中测试的一个或多个列上创建索引。索引条目的作用类似于指向表行的指针,从而使查询可以快速确定哪些行与WHERE子句中的条件匹配,并检索这些行的其他列值。所有MySQL数据类型都可以建立索引。
Java程序猿
2022/06/10
1K0
MySQL 索引的类型
索引有很多种类型,为不同的场景提供更好的性能。在MySQL中,索引是在存储引擎层而不是服务器层实现。不同存储引擎的索引其工作方式并不一样。也不是所有存储引擎都支持所有类型的索引。即使多个存储引擎支持同一种类型的索引,其底层实现也可能不同。
Java架构师必看
2021/05/14
1.4K0
MySQL 索引的类型
Mysql探索(一):B-Tree索引
MySQL是目前业界最为流行的关系型数据库之一,而索引的优化也是数据库性能优化的关键之一。所以,充分地了解MySQL索引有助于提升开发人员对MySQL数据库的使用优化能力。  MySQL的索引有很多种类型,可以为不同的场景提供更好的性能。而B-Tree索引是最为常见的MySQL索引类型,一般谈论MySQL索引时,如果没有特别说明,就是指B-Tree索引。本文就详细讲解一下B-Tree索引的的底层结构,使用原则和特性。  为了节约你的时间,本文的主要内容如下:
aoho求索
2018/08/14
1K0
Mysql探索(一):B-Tree索引
从认识索引到理解索引「索引优化」
认识索引是什么东西非常关键,一个非常恰当的比喻就是书的目录页与书的正文内容之间的关系,为了方便查找书中的内容,通过对内容建立索引形成目录。因此,首先你要明白的一点就是,索引它也是一个文件,它是要占据物理空间的。
民工哥
2020/09/16
6580
深入浅出——深入分析MySQL索引和B+树(基于InnoDB和MyISAM引擎分析),看完直呼:妙哉!
索引是数据库提供的利于快速查询的机制,索引类似于书籍目录,当查询条件那一列建立了索引之后,那么数据库会去硬盘索引文件中找到满足查询条件的(数据的)物理位置, 根据位置就可以定位并获取到数据。
Karos
2023/06/17
1.4K0
深入浅出——深入分析MySQL索引和B+树(基于InnoDB和MyISAM引擎分析),看完直呼:妙哉!
B-树和B+树的应用:数据搜索和数据库索引
定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树: ⑴树中每个结点至多有m 棵子树; ⑵若根结点不是叶子结点,则至少有两棵子树;
黄规速
2022/04/14
7130
B-树和B+树的应用:数据搜索和数据库索引
MySQL索引底层的数据结构
这里有一篇关于存储引擎的文章:https://blog.csdn.net/qq_41618510/article/details/84680226
Java廖志伟
2021/01/29
6440
MySQL索引原理——B树
1、MyISAM是MySQL 5.5之前版本默认的存储引擎,从5.5之后,InnoDB开始成为MySQL默认的存储引擎。MyISAM和InnoDB都是使用B+树实现主键索引、唯一索引和非主键索引。
saintyyu
2021/11/22
6630
MySQL索引原理——B树
推荐阅读
相关推荐
MySQL索引的原理,B+树、聚集索引和二级索引的结构分析
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文