数据库常见面试题:索引是不是加的越多越好 ?面试别答错!

面试题 潘老师 2个月前 (02-11) 28 ℃ (0) 扫码查看

在数据库相关的面试里,“索引是不是加得越多越好”是一个高频问题。不少同学心里可能都琢磨过这个事儿,但在面试时要是回答错了,很可能就会影响面试结果。今天咱们就来深入探讨一下这个问题。

一、面试场景与误区

想象一下这样的面试场景:面试官问你如何排查接口响应慢、SQL查询慢的问题。一般大家都会想到先查看有没有添加索引,毕竟索引能提升查询效率,这么回答没问题。可紧接着,面试官往往会追问:既然索引能提高效率,那多添加几个索引,查询不就更快了吗?这时候要是不假思索地回答“是”,面试可能就凉凉了。

二、索引过多对磁盘空间的影响

我们知道,数据库中的索引通常采用B+树结构。每添加一个索引,就相当于增加了一棵B+树。随着索引数量增多,B+树的数量也会跟着增加。而且,表中的数据是持续增长的,这会让B+树上的叶子节点越来越多。这些不断增多的叶子节点会占据越来越多的磁盘空间。就好比你在电脑里存了很多文件,文件越来越多,占用的硬盘空间也就越来越大。

三、索引过多对SQL操作效率的影响

索引多了,查询确实会更快,只要查询条件能命中索引,就能快速定位到数据。但这并不意味着索引越多就一定越好,因为索引过多会对表的增删改操作产生负面影响。

每次对表进行新增、修改或删除操作时,都需要维护所有的索引树。以新增数据为例,在B+树中,数据是按照从小到大的顺序排列的。新增一条数据时,不仅要检索它在B+树中的插入位置,插入后还可能需要重新排序。要是当前的数据页满了,还得重新创建新的数据页。这个检索、排序、创建和插入的过程会极大地降低操作性能。所以说,索引多了对查询有利,可对增删改操作就不那么友好了。

四、大厂对索引添加的规范

鉴于索引过多带来的这些问题,很多公司,尤其是大厂,对索引的添加都有严格规范。比如,一般会规定单表的索引个数不能超过3 – 5个。对于那些频繁进行增删改操作的表,更是要尽量少创建索引。在选择索引字段时,会优先考虑操作量较大或者关联数量较多的字段。

在数据库设计和优化过程中,索引的添加是个需要谨慎权衡的问题。我们不能只看到索引对查询效率的提升,还得考虑它对磁盘空间和其他操作的影响。如果大家在这方面有什么疑问或者经验,欢迎在评论区留言讨论。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/ms/14171.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】