【Mysql系列】——详细剖析数据库“索引”【上篇】
创始人
2025-06-01 22:43:32
0次

【Mysql系列】——详细剖析数据库中的核心知识【索引】😎

  • 前言🙌
    • 索引
      • 索引概述
      • 为什么需要索引?
      • 索引的优缺点
      • 索引结构
      • 索引的结构为什么不是二叉树和红黑树?
      • 索引的B+树结构
      • 索引的Hash结构
      • Hash结构索引的特点
      • 思考:为什么InnoDB存储引擎选择使用B+Tree索引结构呢?
  • 总结撒花💞

追梦之旅,你我同行

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法,数据库等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
在这里插入图片描述

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【【Mysql系列】——详细剖析数据库“索引”【上篇】~都是精华内容,可不要错过哟!!!😍😍😍

索引

索引概述

   在数据之外,数据库系统还维护着满足查找算法的数据结构,这些数据结构以某种方式指向我们的数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。简单来说,索引是帮助Mysql高效获取数据的数据结构(有序)。
说到数据结构,大家可能一想到B+树、红黑树、二叉树等等各种各样的树就感到头疼。
在这里插入图片描述
其实不用那么慌张,我们只需要了解其结构和一些基本性质就行了。

为什么需要索引?

前面我们已经提到了,索引是一种数据结构,它能够帮助数据库快速查询数据,这就是它的主要作用。当没有索引的时候,我们在查询数据时,就像下面这幅图一样进行全表扫描,这样效率是非常低下的。
在这里插入图片描述
通常来说,一般提到数据库的索引时,其数据结构都是B+树数据结构。下面这幅图是一个大概展示了索引查找数据的画面,并非真正的B+树。
在这里插入图片描述

索引的优缺点

优势劣势
提高数据检查的效率,降低数据库的IO成本索引也是要占用空间的
通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行的 insert、update、delete时,效率降低。
  • 但是,现在的磁盘是很便宜的,所以索引占空间的问题就没有那么重要了。
  • 其实在一个正常的业务中,进行增删改的操作远小于查询操作。所以索引的第二个不足也影响不大。
  • 根据场景需求和业务需求选择是否使用索引。

索引结构

前面的博客已经提到过,索引是在存储引擎层实现的,不同的存储引擎有着不同的结构,主要包括一下几种:
在这里插入图片描述
默认索引都是B+树,面试的时候一般没有说明也是B+树索引结构。
在这里插入图片描述

索引的结构为什么不是二叉树和红黑树?

在这里插入图片描述

索引的B+树结构

在这里插入图片描述

在这里插入图片描述
上面都是数据结构中的B+数结构,而在Mysql中,是对其进行优化的。在原B+Tree的基础上,增加了一个指向相邻叶子结点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问性能。
在这里插入图片描述

索引的Hash结构

哈希表就是采用一定的Hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。如果两个或者多个键值,映射到一个相同的槽位上,他们就产生了hash冲突(也称为是hash碰撞),可以通过链表来解决这个问题。
在这里插入图片描述

Hash结构索引的特点

  1. Hash索引只能用于对等比较( = , in),不支持范围查询(between,>,<,…)
  2. 无法利用索引完成排序操作。我们可以看到,数据在hash表中的存储是无序的。
  3. 查询效率高,通常只需要一次检索就可以了,效率通常要高于B+Tree索引。这里之所以说是通常而不是一定,是因为在可能会发生hash冲突。

注意:在Mysql中,支持hash索引的是Memory引擎,而INnoDB中具有自适应的hash功能,hash索引是存储引擎根据B+Tree索引在指定条件下自动构建的。

思考:为什么InnoDB存储引擎选择使用B+Tree索引结构呢?

理由有以下几点:

  • 相对于二叉树,层级更少,搜索效率更高;
  • 对于B-树,无论是叶子结点还是非叶子节点,都会保存数据,这样导致了一页中存储的键值减少,指针跟着减少(键值key 的个数比指针数少1),要同样保存大量的数据,只能增加树的高度,导致性能的降低;
  • 相对于Hash索引,B+Tree支持范围匹配和排序操作的。而Hash索引不能。

总结撒花💞

   本篇文章旨在分享【Mysql系列】——详细剖析数据库“索引”【上篇】。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

相关内容

热门资讯

在大吉订购APP订购交易亏损被...   近期,不少投资者反映在“大吉订购App”上投资白银、铂金等商品遭遇严重亏损。该平台宣称提供现货订...
铂银壹号APP商品订购交易亏损...   许多中小投资者误以为网上的“商品现货订购”是合规合法的理财渠道,殊不知这背后隐藏着巨大的合规风险...
兴鑫淘金APP贵金属订购交易亏...   白银、贵金属或其他商品类投资,除国家批准的正规期货交易场所及持牌期货公司外,市面上大量第三方交易...
铂银掘金APP无资质的违规平台...   铂银掘金等平台的投资者,往往是被“注册送现金”“充值返现券”“首单免亏”等广告话术吸引,进而下载...
八方淘金APP订购交易不合规,...   “八方淘金APP”“铂银掘金APP”“铂银壹号APP”等软件被指以“现货订购”为名,实际采用高杠...
在指尖订购APP订购商品亏损被...   指尖订购APP这类平台,表面是“订购交易”,实则是披着电商外衣的非法期货陷阱。绝大多数投资者被蒙...
在犀贝易购APP做商品订购交易...   市面上打着“现货投资”“贵金属交易”旗号的APP并不少,但真正合规、受监管的平台并不多。犀贝易购...
易达淘金APP虚假商品订购交易...   易达淘金APP存在严重的虚假宣传与违规交易行为。该平台打着“商品订购”的旗号,实则通过不合规的交...
大浪淘金APP白银订购亏损被骗...   大浪淘金APP最隐蔽的套路,在于其完全封闭的内盘交易系统。表面上,它宣称与国际贵金属市场接轨;实...
一品好购APP上订购白银出现亏...   一品好购APP原名“一品订购”,运营方为上海宝智未来信息技术有限公司。近期不少投资者反映在该平台...
九州订购APP贵金属订购投资骗...   九州订购APP正通过抖.音、快手、今日头条等平台大量投放投资广告,用“5元起投”“充值返现”“0...
坚锅淘金APP交易软件并不正规...   当前,市面上大量所谓的“现货商城订购”交易软件,早已偏离了正常的实物商品买卖,演变为高杠杆、高手...
斗金订购APP贵金属期货交易骗...   斗金订购APP的投资者往往被铺天盖地的广告宣传所诱导——注册即送现金、充值返现券等看似诱人的福利...
警惕!云启购APP违规经营,披...   "5元起投、充值返现、稳赚不赔"——这些诱人的广告语背后,可能是一个精心设计的金融陷阱。  近期...
量子淘金APP贵金属投资不合规...   "4元起投""充值返券""月入过万"——这些极具诱惑力的广告语在短视频平台、社交软件上铺天盖地。...
鑫汇智投APP贵金属商品订购骗...   鑫汇智投APP非法期货投资骗局,受害者在投资过程中根本不懂交易,也不去研究和验证这个平台是否正规...
矅光智策APP平台违规经营非法...   矅光智策APP对外宣称是“商城订购”“现货交易”,但查询其经营范围,并未显示具备开展现货期货交易...
黄金珠宝怎么选?内侧刻字都代表... 潮新闻客户端 记者 马焱 通讯员 任倩影 9月8日下午,“云游杭州 乐购金秋”——“浙城·浙放心”活...
原创 冰... 最近全球国债市场正在上演魔幻一幕: 美债、日债、欧债遭遇猛烈抛售,收益率冲到几十年新高,美国财政部都...
日韩股市开盘表现分化 上证报中国证券网讯 9月9日,日韩股市开盘表现分化,韩国综合指数开盘上涨0.26%,报6972.87...