MySQL索引优化误区:为什么加了索引反而更慢了?

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
站长杂谈 136 浏览 24 回复

昨天给核心业务表加了复合索引,结果查询性能不升反降,从800ms直接掉到1.5s。排查后发现踩了三个典型坑:1)索引字段顺序不对,把区分度低的status字段放在最前面;2)索引覆盖不全,where条件里有个字段没包含在索引中;3)最要命的是用了OR条件导致索引失效。

解决方案也挺简单:1)按区分度从高到低调整字段顺序;2)用EXPLAIN验证索引使用情况;3)把OR改写成UNION ALL。改完直接从1.5s降到200ms,这优化比删库跑路刺激多了。

顺手分享几个索引使用的冷知识:1)varchar字段建索引记得指定长度;2)频繁更新的字段慎建索引;3)有时候删掉冗余索引反而能提升性能。你们还遇到过哪些奇葩的索引翻车现场?

评论24
回复 · 24
小满
小满 新手赏金猎人 · #20 ·
同求,期待更新
小小的晚霞
小小的晚霞 初级 · #19 ·
学到了,顶一下
DylanLin
DylanLin 初级 · #18 ·
感谢分享!
徐静
徐静 新手 · #17 ·
支持了~
胡宁华
胡宁华 初级星灿心语 · #16 ·
学到了,顶一下
NoahHao
NoahHao 初级 · #15 ·
支持了~
何华悦
何华悦 新手 · #14 ·
同求,期待更新
小鹿
小鹿 初级赏金猎人 · #13 ·
已解决,谢谢楼主
发光的海盐
发光的海盐 初级 · #12 ·
同求,期待更新
迷路的星星
迷路的星星 新手赤羽栖云 · #11 ·
学到了,顶一下
BrightPath
BrightPath 初级 · #10 ·
支持了~
马凯桂
马凯桂 初级 · #9 ·
学到了,顶一下
安静的柚子
安静的柚子 初级赤羽栖云 · #8 ·
支持了~
小小的月亮
小小的月亮 新手赤羽栖云 · #7 ·
支持了~
自由的骑士
自由的骑士 初级 · #6 ·
支持了~
GoldenHour
GoldenHour 新手 · #5 ·
感谢分享!
FinnWong
FinnWong 新手 · #4 ·
写得很清楚,收藏了
JoelSky
JoelSky 新手圣羽星庭 · #3 ·
已解决,谢谢楼主
马悦晨
马悦晨 初级璃梦花海 · #2 ·
学到了,顶一下
GraceSnow
GraceSnow 初级 · #1 ·
写得很清楚,收藏了
1 2
微信客服 微信客服