你好,面试官 | 我不仅知道MySQL索引,还会优化呢~

小龙有话说

本期会模拟面试 MySQL 索引更深层 相关内容。

涉及知识点,MySQL 索引设计原则,使用法则,MySQL优化等

本期题改编自 ——2021届秋招 北森 二面

面试现场

叮叮叮……

面试官:“你好,我是XX面试官,请问是小龙吗?”

小龙:“您好,面试官,我是小龙”

面试官:“好的,现在有空吗,我们开始面试吧”

小龙:“嗯嗯,准备好啦”

…….

other questions

…….

面试官:“我看你简历上有提到你对 MySQL 掌握得挺好的对吧?。”

小龙:“哈哈,还算可以吧!”

面试官:“好的,能告诉我 MySQL 中的怎样创建索引吗?”

小龙:“好的,我简单说几种。”

小龙:“一种是通过 alter 命令,ALTER TABLE table_name ADD INDEX index_name (column_list);”

小龙:“也可以在创建表时创建,CREATE INDEX index_name ON table_name (column_list);”

面试官:“好的,我们都知道索引用的好与坏,可以间接影响整个系统性能,那么你平时是怎样去设计索引的呢?”

小龙:“其实道理很简单,无须繁琐花哨,在公司项目中,我们更看重的是性价比。”

独白:“来了来了,幸好在我【面试笔记】中总结过,来吧,随便挑几点吹给你听。”

面试官:“说说看~”

小龙:“总的来说,你创建索引目的就是要在尽可能少占内存情况下去设计一个合适的索引让查询速度更快。”

面试官:“不错,接着说”

小龙:“我们一般建在 where 字段匹配条件后,为了让创建索引所带来的好处大于其坏处,我们一定要在数据量大,也就是基数大的情况下才考虑索引。”

小龙:“因为创建索引本身就要占空间,操作数据也要操作索引文件,数据少得不偿失。”

面试官:“嗯嗯,不错,还有吗?”

小龙:“嗯,为了使得效率更高,应该选择区分度大,匹配度高的字段建立索引 。而且索引不适合于频繁更新的数据,因为操作数据同事需要维护索引又得花费时间。”

面试官:“OK,那假如我本来已经创建了个 (a) 索引,但是由于需求我们现在需要加上(b)索引,你觉得怎样操作更好呢?”

小龙:“ 嗯,我觉得我们创建索引方面,我们应该尽量扩展索引,而不是创建新的索引,可以合理利用联合索引,如(a)->(a,b) 。”

小龙:“除此之外,我们在使用时还得考虑索引是否会失效。不恰当的使用索引,不仅没有提高性能,反而占额外内存空间,影响效率,所以说学会如何使用也是一门学问。”

面试官:“嗯嗯,那在使用时哪些地方需要我们注意呢?”

小龙:“这个在我【面试笔记】中详细总结过啦,随便给面试官举几个吧。”

小龙:“比如,我们在写模糊查询时,如果以 %开头,索引会因此失效。”

面试官:“那你知道具体原因吗?”

独白:“牛逼,这个考得还算有水平”

小龙:“其实,你理解了索引的构造排列,你就懂了。”

小龙:”我们通常用的索引数据结构是B+树,而索引是有序排列的;索引的排列顺序是根据比较字符串的首字母排序的,如果首字母相同,就根据比较第二个字母进行排序,以此类推。“

小龙:”因此如果把 % 放在了前面,最左的 n 个字母便是模糊不定的,无法根据索引的有序性 准确的定位到某一个索引,只能进行全表扫描,找出符合条件的数据。“

面试官:“嗯嗯,好的,基础不错,那在项目中有尝试去对MySQL进行调优优化这些吗?”

独白:“幸好在我【面试笔记】中从 索引+sql语句+数据库结构优化+优化器优化+架构优化 详细总结了。”

小龙:“ 优化我们可以从很多方面考虑,比如 索引+sql语句+数据库结构优化+优化器优化+架构优化,这里简单说几个吧!”

面试官:“可以。”

小龙:“比如,我们从基本的索引考虑,尽量使用覆盖索引,5.6了还支持索引下推呢!再写多读少的场景下,可以选择普通索引而不要唯一索引,不懂可以看上一篇文章。”

小龙:“当然需要考虑索引失效,和设计原则,上文说过了,不在赘述。”

小龙:“在写 sql 时,若是主键自增的表,还可以把 Limit 查询转换成某个位置的查询,比如 select * from tb_sku where id>20000 limit 10;这样可以很好利用主键索引快速定位。”

小龙:“优化器我们还可以使用 MRR 【Multi-Range Read】将 ID 或键值读到 buffer 排序,通过把「随机磁盘读」,转化为「顺序磁盘读」,减少磁盘IO,从而提高了索引查询的性能。就暂时只说这些吧!”

面试官:“哈哈,好的,没想到你还懂这些,不错。”

小龙:“对啦,在使用过程中,我们首先应该做到写一手好 SQL ,考虑索引失效,复合查询、事务、锁等,其实把这些都注意,工作中大多数问题都已经解决啦。”

小龙:“然后假如遇上了 SQL 执行变慢,此时我们应该先排查问题所在,如果可以直接找到问题可以直接解决。实在不行再考虑从优化器参数、架构、表设计等进行优化,这才是最好的优化方案。”

面试官:“说的很好,看来平时还是有认真学习参与项目中。”

面试官:“好的,时间差不多啦,今天暂时聊那么多,下期再谈谈。”

独白:“不愧是我,真男人是也!”

知识总结

本期我们通过面试模拟逐渐深入探讨了 MySQL ,下期会继续深入剖析关于 事务、锁、日志等底层实现原理。订阅+星标持续追更

面试重点

索引设计原则?使用索引注意点?MySQL优化方案等

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/259943.html<

(0)
运维的头像运维
上一篇2025-05-02 22:38
下一篇 2025-05-02 22:39

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注