暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL索引的三优三缺你答废了吗

liebao小奕 2022-08-14
214

首先猎豹时间截至今天,已经一百六十三天啦。可喜可贺?奥利给。

回归今天老湿机系列主题,关于这道题,基本就是必考了,回答的怎样也能反映的是候选人对索引的高度理解。

如果这个回答的很好那么依我的性格下一个问题肯定就是考察应用实践了,再次考察候选人不是八股文式的理解,博主之前面试,候选人这题工作三年都回答的不太好,今后碰到此问题,记住三优三缺就完事了,让我们来看看普通人VS老湿机对此问题的回答。

普通人的回答:

MYSQL的索引的优点就是当加索引之后可以去提高数据的一个查询效率。加了索引和没加索引的时候,它的底层结构搜索过程是不一样的,然后缺点的话如果索引太多它会在做索引维护的时候,会占用很长的一个时间,然后好像应该啊,其次不能在一些像姓名性别类的一些字段上建立索引。

老湿机的回答

索引是一种能够去帮助MYSQL从磁盘去检索数据的一种数据结构。在MYSQL的innoDB引擎里面采用的是b+树结构来去实现索引和数据的存储。mysql里面的索引的优点有很多。

第一个优点,通过B+树的结构来存储数据,可以去大大减少数据检索时候的一个磁盘io次数,从而去提升数据的查询效率。

第二个优点,B+树索引在进行范围查找的时候只需要去找到起始节点,然后基于叶子节点里面的链表结构往下去读取就行了,查询效率会比较高。

第三个优点,通过唯一索引约束,可以去保证数据表里面的每一行数据的一个唯一性。

当然索引的不合理使用也会带来很多的一些缺点。

第一个缺点,数据在做增加、修改、删除操作的时候需要涉及到索引的一个维护,当数据量比较大的情况下,索引的维护会带来比较大的一个性能开销。

第二个缺点,一个表里面是允许存在一个聚集索引和多个非聚集索引,但是索引的数量不能创建太多,否则会造成索引的维护成本过高。

第三个缺点,创建索引的时候,我们需要去考虑的索引字段值的一个分散性,如果字段重复数据比较多的情况下,创建索引反而会带来性能较低。

在我看来,任何技术方案都会有两面性,大部分情况下技术方案的选择更多的是看中它的优势和当前这个问题的匹配度。今天就分享到这里了,周末快乐~ 觉得看得不错想了解更多这样的短文,可以关注公众号这个系列的动态。


猎豹,一个专注分享Java的学习圈

文章转载自liebao小奕,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论