MySQL 索引与慢查询优化笔记
事故现场
一条列表查询在 200 万行的表上跑了 4 秒,EXPLAIN 一看,type 是 ALL,全表扫描。
索引失效的常见场景
- 对索引列使用函数或运算
- 隐式类型转换(字符串列用数字查询)
- 前导模糊查询 LIKE '%xx'
- 联合索引不满足最左前缀
排查三板斧
EXPLAIN SELECT ...;
SHOW INDEX FROM t;
SHOW PROFILES;
优化结果
补上联合索引 (user_id, created_at),把 SELECT * 改为按需取列,查询从 4s 降到 30ms。
经验总结
- 索引不是越多越好,写入代价真实存在
- 上线前对核心链路做 EXPLAIN 应该成为习惯
全文完
标签:后端MySQL
版权声明
本文链接https://www.sanshijiu.cn/post/11
版权声明本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 叁拾玖の小站!
评论区 0
暂无评论,快来抢沙发吧~