MySQL面试题--索引概念以及底层

这篇具有很好参考价值的文章主要介绍了MySQL面试题--索引概念以及底层。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

概述

索引的底层数据结构

二叉树

B树

 B+树

B树与B+树对比:

面试回答

大纲

回答


概述

        索引(index)是帮助MySQL高效获取数据的数据结构(有序)。

        在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

如果要查找年龄为33的人,左图从上到下遍历,遍历到第一个33依然会向下遍历,效率低 

而如果是二叉树,左小右大,就会方便很多,每一次都可以说是二分查询

MySQL面试题--索引概念以及底层

索引的底层数据结构

MySQL索引使用的是B+树,在这里我们要与二叉树,红黑树,B树做对比

二叉树

二叉搜索树在极端情况下,会退化为链表

红黑树是平衡的,比较稳定,但是因为红黑树也是二叉树,一个节点只有两个儿子,在大数据量的情况下,红黑树会变得特别特别高

MySQL面试题--索引概念以及底层

B树

B-TreeB树是一种多叉路衡查找树,相对于二叉树,B树每个节点可以有多个分支,即多叉。

以一颗最大度数(max-degree)为5(5)b-tree为例,那这个B树每个节点最多存储4key

树的高度肉眼可见比二叉树低得多

MySQL面试题--索引概念以及底层

 B+树

        B+Tree是在BTree基础上的一种优化,使其更适合实现外存储索引结构,InnoDB存储引擎就是用B+Tree实现其索引结构

其中,非叶子节点,只存储指针,不存储数据,数据则统一在叶子节点存储

MySQL面试题--索引概念以及底层

B树与B+树对比:

①:磁盘读写代价B+树更低;

②:查询效率B+树更加稳定;

③:B+树便于扫库和区间查询

面试回答

大纲

了解过索引吗?(什么是索引)?

        索引(index)是帮助MySQL高效获取数据的数据结构(有序)

        提高数据检索的效率,降低数据库的IO成本(不需要全表扫描)

        通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗

索引的底层数据结构了解过嘛 ?

        MySQL的InnoDB引擎采用的B+树的数据结构来存储索引

        阶数更多,路径更短

        磁盘读写代价B+树更低,非叶子节点只存储指针,叶子阶段存储数据

        B+树便于扫库和区间查询,叶子节点是一个双向链表

回答

面试官:了解过索引吗?(什么是索引)

候选人:嗯,索引在项目中还是比较常见的,它是帮助MySQL高效获取数据 的数据结构,主要是用来提高数据检索的效率,降低数据库的IO成本,同时 通过索引列对数据进行排序,降低数据排序的成本,也能降低了CPU的消耗

面试官:索引的底层数据结构了解过嘛 ?

候选人:MySQL的默认的存储引擎InnoDB采用的B+树的数据结构来存储索 引,选择B+树的主要的原因是:第一阶数更多,路径更短,第二个磁盘读写 代价B+树更低,非叶子节点只存储指针,叶子阶段存储数据,第三是B+树便 于扫库和区间查询,叶子节点是一个双向链表

面试官:B树和B+树的区别是什么呢?

候选人:第一:在B树中,非叶子节点和叶子节点都会存放数据,而B+树的 所有的数据都会出现在叶子节点,在查询的时候,B+树查找效率更加稳定 第二:在进行范围查询的时候,B+树效率更高,因为B+树都在叶子节点存 储,并且叶子节点是一个双向链表文章来源地址https://www.toymoban.com/news/detail-501238.html

到了这里,关于MySQL面试题--索引概念以及底层的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文让你对mysql索引底层实现明明白白

    图片是本人随笔画的,有点粗糙,望大家谅解,如有不妥之处,请联系我们,感谢 .索引是帮助mysql高效获取数据的排好序的数据结构 .索引是存储在文件里的 .数据结构: 二叉树 HASH BTREE       如果没有索引的话,循环一条一条的找,找一次就是一次IO,这样速度就会很慢 我

    2024年01月16日
    浏览(42)
  • MySQL索引概述

    当表中的数据量到达几十万甚至上百万的时候,SQL查询所花费的时间会很长,导致业务超时出错,此时就需要用索引来加速SQL查询。 由于索引也是需要存储成索引文件的,因此对索引的使用也会涉及磁盘I/O操作。如果索引创建过多,使用不当,会造成SQL查询时,进行大量无用

    2024年02月03日
    浏览(41)
  • MySQL为什么采用B+树作为索引底层数据结构?

            索引就像一本书的目录,通过索引可以快速找到我们想要找的内容。那么什么样的数据结构可以用来实现索引呢?我们可能会想到:二叉查找树,平衡搜索树,或者是B树等等一系列的数据结构,那么为什么MySQL最终选择了B+树作为索引的数据结构呢?         要想

    2024年02月16日
    浏览(49)
  • MySQL进阶篇:索引(概述,结构,分类,语法,SQL性能分析,索引使用,设计原则)

    索引(index)是帮助MysQL 高效获取数据的数据结构 ( 有序 )。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 优缺点: MySQL的索引是在存储

    2024年01月20日
    浏览(51)
  • MySQL索引1——索引基本概念与索引结构(B树、R树、Hash等)

    目录 索引(INDEX)基本概念 索引结构分类 B+Tree树索引结构 Hash索引结构 Full-Text索引 R-Tree索引 什么是索引 索引是帮助MySQL高效获取数据的有序数据结构 为数据库表中的某些列创建索引,就是对数据库表中某些列的值通过不同的数据结构进行排序 为列建立索引之后,数据库除了

    2024年02月14日
    浏览(41)
  • MySQL第四战:视图以及常见面试题(上)

    目录 目录: 一.视图 1.介绍什么是视图 2.视图的语法 语法讲解 实例操作  二.MySQL面试题 1.SQL脚本 2.面试题实战 三.思维导图 随着数字化时代的飞速发展,数据库技术,特别是MySQL,已经成为IT领域中不可或缺的一环。从简单的数据存储到复杂的数据分析,从个人博客到大型企

    2024年02月02日
    浏览(41)
  • MySQL面试题-索引篇

    目录 1.什么是索引 2.索引常见的数据结构? 3.MySQL有哪些索引? 4.什么是B+树?为什么B+树成为主要的SQL数据库的索引实现? 5.聚簇索引和非聚簇索引? 6.什么是页分裂 7.Mysql为何建议使用自增id作主键  8.什么叫回表? 9.什么是覆盖索引? 10.什么是最左前缀原则? 11.什么是索

    2024年02月08日
    浏览(29)
  • 面试突击---MySQL索引

    1、回答任何问题的时候不要着急给出答案,先把面试官的问题听清楚 2、听到问题无论是自己会的问题还是不会的问题,先在脑海里想一两秒中,把要说的话做一个梳理 3、回答任何问题的时候要有条理,如果不知道怎么回答就按照总分或者总分总的方式来说 4、面试中遇到自

    2024年04月17日
    浏览(33)
  • 【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?

    在 MySQL 中, 索引是在存储引擎层实现的, 所以并没有统⼀的索引标准, 由于 InnoDB 存储引擎在 MySQL数据库中使⽤最为⼴泛, 下⾯以 InnoDB 为例来分析⼀下其中的索引模型.在 InnoDB 中, 表都是根据主键顺序以索引的形式存放的, InnoDB 使⽤了 B+ 树索引模型,所以数据都是存储在 B+ 树

    2023年04月17日
    浏览(56)
  • mysql面试题12:讲一讲MySQL中什么是半同步复制?底层实现?

    该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 MySQL中的半同步复制(Semi-Synchronous Replication)是一种复制模式,它在主服务器将数据写入到二进制日志之后,要求至少一个从服务器确认接收到数据后

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包