不会MySQL索引,面试官让回家等通知

你是不是对于MySQL索引的知识点一直都像大杂烩,好像什么都知道,如果进行深究的话可能一个也答不上来。

图片来自Pexels

假如你去面试,面试官让你聊一下对索引的理解,然而你对索引的理解仅限于,检索数据就是快,是一种数据结构这个层面,那你就只能回家等通知了。

为了避免这种尴尬的事情发生,咔咔用时两天将索引的内容在自己理解的范围内进行了整理,如有整理不全面的地方可以在评论区进行补充和提建议。

MySQL索引到底是什么

相信大多数伙伴都买过技术类的书籍,看完没看完不知道,但是目录肯定看的次数最多。

看目录有没有自己目前的痛点,如果有就会根据目录对应的页码用最快的速度翻阅到相应内容位置。

那么在MySQL中同样也是这样的一个道理,MySQL的索引就是存储引擎为了快速找到数据的一种数据结构。

同样在MySQL索引中又分了几种类型,分别为:

B-tree索引

哈希索引

空间索引

全文索引

下文所有内容均在InnoDB的基础上讨论。

为什么要使用索引

①索引可以加快数据检索速度,这也是使用的索引的最主要原因。

②索引本身具有顺序性,在进行范围查询时,获取的数据已经排好了序,从而避免服务器再次排序和建立临时表的问题。

③索引的底层实现本身具有顺序性,通过磁盘预读使得在磁盘上对数据的访问大致呈顺序的寻址,也就是将随机的I/O变为顺序I/O。

这几点不理解就暂时先放着,继续看下文即可,会给你一个满意的解释。

任何事物都存在双面性,既然能提供性能的提升,自然在其他方面也会付出额外的代价:

索引是跟数据共存,因此会占用额外的存储空间。

索引创建和维护需要时间成本,这个成本随着数据量的增大而增大。

索引创建会降低数据的增、删、改的性能,因为在修改数据的同时还需要修改索引数据。

InnoDB为什么使用B+Tree而不使用BTree

聊到这个问题那就必须得分清楚BTree、B+tree的区别,首先来看一下BTree。

Btree解析

先来看一下BTree的数据结构是怎么样的,这里咔咔给提供一个网站地址,可以看到关于数据结构的一些实现过程:




转载请注明:http://www.aierlanlan.com/tzrz/479.html

  • 上一篇文章:
  •   
  • 下一篇文章: