首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
Freedomoooo
门头沟学院 Java
关注
已关注
取消关注
@JavaSouth南哥:
【面试官】知道MySQL慢查询吗?
面试官:知道MySQL慢查询吗?面试官:在工作中你怎么优化SQL的?面试官:遵循第二范式就一定最优?面试官:还有呢?面试官:在工作中,表索引你怎么设计的?面试官:那索引建立越多,查询效率就越高吗?大家好,我是南哥。一个Java学习与进阶的领路人,跟着南哥我们一起Java成长。文章目录慢查询SQL优化表设计优化SQL语句优化索引如何设计1. 慢查询面试官:知道MySQL慢查询吗?MySQL的慢查询日志可以记录执行时间超过阈值的SQL查询语句,所以我们可以利用该日志查找出哪些SQL语句执行效率差,从而对SQL语句进行优化。MySQL5.7以上版本可以通过SET命令来开启慢查询日志。 SET GLOBAL slow_query_log=ON; SET GLOBAL long_query_time=2; SET SESSION long_query_time=2;开启完慢查询日志,我们找到该日志的位置,打开文件即可查询慢查询的SQL。 # 查询慢查询日志文件位置 SHOW VARIABLES LIKE '%slow_query_log_file%';打开DESKTOP-ALU4BOC-slow.log文件,找到慢查询SQL为:select sleep(11)。D:\MySQL\bin\mysqld, Version: 5.5.40 (MySQL Community Server (GPL)). started with:TCP Port: 3306, Named Pipe: MySQLTime Id Command Argument# Time: 220828 21:40:28# User@Host: root[root] @ localhost [127.0.0.1]# Query_time: 11.004454 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0use mysql;SET timestamp=1661694028;select sleep(11);2. SQL优化2.1 表设计优化面试官:在工作中你怎么优化SQL的?业务开发中涉及数据库的第一步是表设计,要优化SQL就要从第一步开始做起。MySQL表设计要尽可能满足数据库三大范式,帮助大家回顾下:第一范式:数据库表中的每一列都是不可再分的属性,属性相近或相同的列应该合并。第二范式:满足第一范式的条件下,一个表只能描述一个对象。如果某些列经常出现数据重复,应该把这些列作为另一个表。第三范式:满足第二范式的条件下,表中的每一列都只能依赖于主键,即直接与主键相关。我们在业务开发中遇到反第二范式的情况是最多的,例如错误的订单明细表的设计,每一个订单明细都包含了重复的商品名称、商品单位、商品价格,这三个字段属于字段冗余存储。如果表的数据量级很大,那造成的冗余存储量是可想而知的,而且最要命的问题是如果要修改某一个商品名称,那所有的订单明细数据都要修改。我们可以遵循第三范式,把冗余的字段抽出一个新的商品表,当要查询订单明细时只需要把两表通过商品id进行连接即可。面试官:遵循第二范式就一定最优?遵循第二范式的表设计不一定是最优的情况,还是那句话,要根据实际的业务场景权衡利弊。虽然把冗余数据抽离出去了,但却增加了表的数量,也意味着查询数据时表之间的join连接操作也会变多。而join连接的性能是比较低的,有可能join操作会成为数据库性能的瓶颈。2.2 SQL语句优化面试官:还有呢?SQL优化除了做好表设计的优化工作,还需要对SQL语句进行优化。而SQL查询语句的优化主要从覆盖索引、避免索引失效、减少不必要的查询三个方面入手。一、从覆盖索引的角度。order by排序的字段要尽量覆盖索引。如果使用非索引字段进行排序,MySQL会进行额外的文件排序,将查询结果根据非索引列在磁盘中再排序一次。当我们使用explain关键字分析SQL时会发现Extra会出现Using filesort。group by分组要尽量覆盖索引。如果使用非索引字段进行分组,MySQL只能进行全表扫描后建立临时表才能得出分组结果。另外我们可以使用explain关键字来分析SQL语句的效率,查看SQL语句是否覆盖索引。二、从避免索引失效的角度。关于如何避免索引失效,大家可以阅读我出版的《JavaGetOffer》专栏关于【MySQL索引】的文章。三、从减少不必要的查询的角度。如果只需要查询部分列,尽量不要使用select *查询,防止造成不必要的资源消耗、占用过多的网络带宽。2.3 索引如何设计面试官:在工作中,表索引你怎么设计的?索引的设计有以下设计原则,大家在实际业务开发中应该尽量遵循这些原则,可以帮你避开不少坑。经常进行order by排序、group by分组、join多表联结查询的字段应该建立索引。经常在where子句中出现的字段应该建立索引。尽量使用数据量小的字段建立索引。例如对于char(500)和char(10)两个字段类型来说,肯定是以后者进行索引匹配的速度更快。如果需要建立索引的字段值比较长,可以使用值的部分前缀来建立索引。例如varchar类型的name字段,我们需要根据前三个字符来建立前缀索引,可以使用以下SQL命令:ALTER TABLE example_table ADD INDEX index_name (name(3))。面试官:那索引建立越多,查询效率就越高吗?另外大家记住一点,索引不是建立越多越好。合理设计的索引确实能大大提高SQL效率,但每建立一个字段索引,MySQL就要为该索引多维护一棵B-Tree,越多的索引会造成表更新效率变得低下。最后,评论区说它好孤独的!!它需要你们的吐槽。关于Java技术、牛友的迷茫、简历等问题来评论区和南哥、牛油们一起吐槽分析分析。创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️❤️
点赞 18
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 15:18
东北师范大学 Java
我梳理了大厂300+个招聘信息,原来现在对Java程序员的要求都是这样的
技术团队转型背景AI时代,本来觉得研发要被边缘化了,看不到希望,准备转行;此时,算法老师出了一些让自己失业的产品,大模型崛起,智能体时代,我觉得我又行了,未来不是研发的时代也不是算法的时代,而是复合型人才的时代(研发+模型微调);技术团队转型1、目前所有有点技术追求的团队都在拥抱大模型,试图让自己团队在这个新的领域占有自己新的地盘,来给自己的团队和职业生涯续命三五年;2、最近我们团队也在疯狂的进行AI探索,我这个泥腿子不得不从理论派转战实战派,和几个当前互联网大厂的前沿团队交流之后,我觉得大家都处于朦胧阶段,很多都还处于瞎胡搞的阶段,然后就对外开始吹nb,把领导们忽悠的一愣一愣的,我明白,我胆...
没有实习经历,还有机会进大厂吗
校招我听劝
点赞
评论
收藏
分享
05-29 00:07
深信服_Java研发工程师(准入职员工)
深信服内推-深信服内推码
🎉最近已经入职深信服啦,感觉时间过得超快! 之前经常有朋友来问我做B端的售前产品经理/客户经理未来发展到底怎么样,适合刚毕业无经验的应届生吗?我的专业与市场不搭边,能往市场岗位发展吗?这回借着来深信服长沙培训的契机,也是亲身体验了下深信服的新人培训,以上问题,可以给大家统统分享一下啦! 🌷深信服的市场岗位为什么值得选择? 深信服,网安云计算领军者,融AI技术,服务多领域。市场岗位邀你共谋数字化转型,策划战略,定制方案,远离内卷,拓宽视野,实现价值转身。 🤟深信服市场新人培养体验究竟如何? 👅个人背景 本硕化学专业,ENFJ。喜爱健身,吉他,唱歌,读书等。 🤛跨界的我,从化学实验室转战...
深信服公司福利 493人发布
点赞
评论
收藏
分享
04-16 16:31
门头沟学院 前端工程师
有趣的hr
点赞
评论
收藏
分享
06-01 19:51
门头沟学院 Java
拼多多暑期 - 二面 & 三面
二面1、拷打实习2、JVM 如何实现的跨平台?3、一个机器两个进程会有几个 JVM?4、垃圾回收如何判断一块内存是不是垃圾?5、为什么垃圾回收要进行分代?6、了解哪些垃圾回收算法?7、开发中有没有用过并发编程?8、线程池具体是怎么做的?9、里面有哪些数据结构?10、Java 里有哪些结构可以用来实现这里的阻塞队列?11、wait 和 notify ?12、并发编程时的线程数根据什么条件来选择?13、数据库的隔离级别?14、什么是脏读?15、有没有用 Java 写过网络相关的应用16、TCP的流量控制和拥塞控制有什么区别?是为了解决什么问题?17、流量控制具体怎么做的?18、除了Java外还有主...
查看20道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
字节last day,知无不言!
2623
2
...
你的经历比较单薄, 但简历又弥补了这一点--双非仔个人简历分享
2294
3
...
六月还有机会的,对吗?
1839
4
...
发现27282届的同学怎么越来越卷了,投个票看看相互的进度吧
1367
5
...
只有收到offer那一刻是开心的
1134
6
...
25 暑期实习&秋招面经
991
7
...
怎么包装实习经历呢
935
8
...
记录一下选择
930
9
...
答辩时被导师当着所有人的面阴阳
893
10
...
为什么我的mos管驱动电路总是不听话?(上-基本原理总结)
710
创作者周榜
更多
正在热议
更多
#
写给毕业5年后的自己
#
6962次浏览
123人参与
#
今年形式下双非本找得到工作吗
#
133749次浏览
1007人参与
#
华泰证券Fintech星战营
#
190783次浏览
279人参与
#
职场捅娄子大赛
#
334175次浏览
3370人参与
#
你的秋招第一场笔试是哪家
#
128486次浏览
1399人参与
#
一人一个landing小技巧
#
64959次浏览
1005人参与
#
材料专业就业可以去哪些企业岗位
#
32828次浏览
314人参与
#
汇川技术求职进展汇总
#
120838次浏览
809人参与
#
产品2023笔面经
#
51148次浏览
441人参与
#
哪些公司笔/面试难度大?
#
2541次浏览
19人参与
#
硬件应届生薪资是否普遍偏低?
#
70170次浏览
506人参与
#
我想象的工作vs实际工作
#
470799次浏览
4781人参与
#
今年的你投递了多少份简历才上岸
#
33528次浏览
117人参与
#
通信硬件人社招/春招/实习投递现状
#
24943次浏览
922人参与
#
实习中的菜狗时刻
#
349494次浏览
3218人参与
#
考公VS就业,你怎么选?
#
58641次浏览
393人参与
#
总结:哪家公司面试体验感最差
#
55763次浏览
262人参与
#
工作后会跟朋友渐行渐远吗
#
25774次浏览
191人参与
#
机械人的薪资开到多少,才适合去?
#
107779次浏览
445人参与
#
你的论文盲审过了没?
#
103102次浏览
1468人参与
#
考公还是考研,你怎么选?
#
26014次浏览
131人参与
牛客网
牛客企业服务