MySQL死活不走索引终极大解密(看完想杀人)

一名运维人员遭遇全表扫描导致的性能瓶颈,通过排查发现索引被意外禁用,最终重启索引解决难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天运维小窗我,说我们的SQL查询太慢,几乎所有查询都是全表扫描,占用了机器大部分资源,严重影响了其他应用的性能。

听到这种话,有技术洁癖的我哪能忍受如此奇耻大辱。我拍桌怒吼,十分钟给你解决(╯—﹏—)╯(┷━━━┷

 

第一步,先看表建索引了没。关键字段都有,而且是组合索引,没问题( •̀_•́ )

 

第二步,再看SQL用的对不对。都是用的索引字段,条件中没有什么or啊,IS NULL判断啊什么的,而且遵循的"最左匹配原则",没道理不走索引的

 

第三步,祭出EXPLAIN。结果是,除了用主键查询的走了主键索引外,其他一律都没走索引,组合索引的N种组合全试过了

 

第四步,十分钟之期已过。男子汉大丈夫,一言既出,驷马难追。一言不合我就删库走人(╯—﹏—)╯(┷━━━┷

 

第五步,等一下,在删库之前,我还是想确认一遍,是不是真的建立索引了。一条命令敲出去

SHOW KEYS FROM balabala;

结果我们的索引是长这样的:

一眼看上去,的确是建了索引的。

再看最后一眼吧,咦,disable是什么鬼?

查一下,这些字段都是什么含义

看完我就想杀人了,喵的,这是索引被关闭的意思

请帮我问候一下关闭这个索引的人的麻麻(╯—﹏—)╯(┷━━━┷

 

解决办法:

关闭:ALTER TABLE `test` DISABLE KEYS ;
开启:ALTER TABLE `test` ENABLE KEYS;

 

今天真够惊心动魄的,不过工作总算是保住了,窃喜๑乛◡乛๑

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值