Mysql索引使用的正确姿势,吊打面试官系列

本文介绍了MySQL中的索引优化原则,包括何时添加索引、避免索引失效的注意事项,以及如何正确使用联合索引。同时,针对Java开发者,强调了面试前的准备,特别是刷题对于熟悉面试知识点的重要性。
摘要由CSDN通过智能技术生成
  1. 少用or,用它来连接时索引会失效。

  2. like查询以%开头。

  3. 字符串不加单引号索引失效。

  4. 如果mysql估计使用全表扫描要比使用索引快,则不使用索引。

  5. 在MYSQL使用不等于(<,>,!=)的时候无法使用索引,会导致索引失效。

  6. is null或者is not null 也会导致无法使用索引。

  7. 不在索引列上做任何操作(计算,函数,(自动或者手动)类型装换),会导致索引失效而导致全表扫描。

  8. 最佳左前缀法则——如果索引了多列,要遵守最左前缀法则。

索引优化原则

给需要的字段加索引

一般需要加索引的都是where中经常使用的字段,但是像性别这种属性字段,加索引的意义不大,因为性别这类字段选择性太低(基础/总数)。

如下所示,如果userinfo表中的数据90%以上,都是性别为男的用户,这个时候给sex字段加索引,收效甚微,

select sum(sex=‘男’) as sexCount,sum(1) as countNum from userinfo

结果:

sexCount countNum

4 5

错误的为每个列创建独立索引

有些人可能会把where条件后面所有的字段都加上索引,但是后面却会发现这样做起到的效果收效甚微,这个时候我们因该优先使用联合索引。

如下所示:虽然我给name和age都设置了索引,但是真正使用到的只有name索引。如果用户表中存在大量名叫张三的用户,那age就需要进行二次筛选,这就会耗费相当的资源。

select * from userinfo where name= ‘张三’ and age=21

索引使用情况:

1 SIMPLE userinfo ref name,age name 768 const 1 33.33 Using where

如果我们给name+age设置联合索引,我们就可以快速检索到我们需要的数据,不需要进行二次筛选。

索引使用情况:

1 SIMPLE userinfo ref name_age name_age 773 const,const 1 100

正确使用联合索引

联合索引一定要注意索引顺序,一般放在前面的都是选择性比较高的索引字段。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

img
img

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024b 备注Java获取(资料价值较高,非无偿)
img

总结

面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。

我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

面试题及解析总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

大厂面试场景

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

知识点总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

片转存中…(img-IycbP4aK-1711573401675)]

大厂面试场景

[外链图片转存中…(img-gxpXC3h1-1711573401675)]

知识点总结

[外链图片转存中…(img-P7mFfl2x-1711573401675)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值