在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
MySQL索引种类有哪些?底层实现原是什么?MySQL索引分为普通索引、唯一索引、主键索引、联合索引(又叫复合索引)、全文索引。索引是在Mysql的存储引擎层中实现的而不是在服务层实现的。所以每种存储引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的索引类型的。
索引存储在内存中,为服务器存储引擎为了快速找到记录的一种数据结构。索引的主要作用是加快数据查找速度,提高数据库的性能。
一、索引的分类
普通索引:最基本的索引,它没有任何限制。唯一索引:与普通索引类似,不同的就是索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。主键索引:它是一种特殊的唯一索引,用于唯一标识数据表中的某一条记录,不允许有空值,一般用 primary key 来约束。联合索引(又叫复合索引):多个字段上建立的索引,能够加速复合查询条件的检索。全文索引:老版本 MySQL 自带的全文索引只能用于数据库引擎为 MyISAM 的数据表,新版本 MySQL 5.6 的 InnoDB 支持全文索引。默认 MySQL 不支持中文全文检索,可以通过扩展 MySQL,添加中文全文检索或为中文内容表提供一个对应的英文索引表的方式来支持中文。
二、索引结构
索引是在Mysql的存储引擎(InnoDB,MyISAM)层中实现的,而不是在服务层实现的。所以每种存储引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的索引类型的。
Mysql目前提供了以下4种索引:B+Tree 索引: 最常见的索引类型, 大部分索引都支持B+树索引。Hash 索引: 只有Memory引擎支持, 使用场景简单。R-Tree索引(空间索引): 空间索引是MyISAM引擎的一个特殊索引类型, 主要地理空间数据, 使用也很少。S-Full-text(全文索引): 全文索引也是MyISAM的一个特殊索引类型, 主要用于全文索引, InnoDB从Mysql5.6版本开始支持全文索引。
三、BTree 结构
B+Tree是在BTree基础上进行演变的,所以我们先来看看BTree,BTree又叫多路平衡搜索树。
一颗m叉BTree特性如下:(1) 树中每个节点最多包含m个孩子。(2) 除根节点与叶子节点外, 每个节点至少有[ceil(m/2)] 个孩子(ceil函数指向上取整)。(3) 若根节点不是叶子节点, 则至少有两个孩子。(4) 每个非叶子节点由n个Key和n+1个指针组成, 其中 [ceil(m/2) -1 ] <= n <= m-1。
以5叉BTree为例,key的数量: 公式推导 [ceil(m/2) -1 ] <= n <= m-1。所以 2 <= n <= 4,中间节点分裂父节点,两边节点分裂。
四、B + Tree 结构
B+Tree为BTree的变种,B+Tree与BTree的区别:(1) B+Tree的叶子节点保存所有的key信息, 依key大小顺序排列。(2) B+Tree叶子节点元素维护了一个单项链表。所有的非叶子节点都可以看作是key的索引部分。由于B+Tree只有叶子节点保存key信息,查询任何key都要从root走的叶子。所以B+Tree查询效率更稳定。
五、Mysql中的B+Tree
MySql索引数据结构对经典的B+Tree进行了优化,在原B+Tree的基础上,增加了一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
JavaEE在线培训班课程在线学习效果怎么样?
Java作为最流行的编程语言受到了许多人的喜爱,也正因如此,不少人跃跃欲试想要学习Java。如今Java的培训机构遍地开花,由于时间和地域的限制,JavaEE在线培训班课程也应运而生,不过也会有人担忧,在线学习的效果真的能比得上线下的面授课吗?现在小编就为大家分析分析。
5532
2019-12-16 18:42:49
Java并发编程原理解析教程
众所周知,Java并发编程是每一个Java学习者提升自我能力的一个重要学习阶段。在各大知名互联网行业中,Java并发编程都是从业者必须掌握的知识和技能,因此学习Java并发编程的重要性不言而喻。为了解决大家在自学道路上的阻碍,博学谷特地推出了Java并发编程原理解析课程。本文就来为大家详细介绍一下该课程的具体内容,下面就一起来看看吧!
4864
2019-11-04 12:53:15
Activity生命周期四种状态学习总结
随着Activiti的迅猛发展,很多人都开始学习Activiti的相关开发知识。相信了解过Activity生命周期的朋友都知道,其生命周期大致会有四种状态,即运行、暂停、停止和销毁。本文接下来将为大家归纳总结一下Activity生命周期的四种状态,并且为大家介绍一下Activie开发的相关学习课程,感兴趣的小伙伴赶紧看下去吧!
10157
2020-02-24 17:03:55
Redis基础课程学什么?
缓存是目前企业级应用中的核心组成部分,当今主流的电商、生活服务、直播等领域都离不开缓存的使用。Redis作为当下主流的缓存技术,已成为互联网企业的不二首选,基于Redis集群的缓存结构设计已在同领域内占据半壁江山。本文主要为大家介绍Redis的基础课程,让大家清楚地了解Redis基础课程学什么,有学习需要的朋友不妨来了解一下。
4667
2020-04-24 16:22:40
线上Java哪个培训机构好?怎么选择?
线上Java哪个培训机构好?怎么选择?在选择在线Java培训机构时,要注意培训机构的上课设备好不好,如果设备不好学员在上课过程中会听不清讲师在讲什么,其次是课程内容质量,所学知识是否符合现在企业需要,关于这一点可以参考招聘网站上的招聘要求,与课程大纲进行对比。
7225
2020-05-19 14:40:41