MySQL 索引优化与慢查询分析
数据库性能优化是后端开发的核心技能之一。MySQL 索引设计得当,能让查询效率提升几个数量级;设计不当,则会拖慢整个系统。
一、索引基础
索引是一种排好序的数据结构,常见实现为 B+ 树。它能快速定位数据,但会增加写入成本和存储空间。
- B+ 树索引:范围查询和排序友好
- Hash 索引:等值查询快,不支持范围
- 全文索引:用于文本搜索
- 联合索引:按最左前缀原则匹配
二、Explain 分析
通过 EXPLAIN 查看执行计划,重点关注:
type:访问类型,越靠前性能越好,如 const、ref、range、index、ALLkey:实际使用的索引rows:扫描行数估算Extra:Using index、Using where、Using filesort 等
三、慢查询优化思路
- 开启慢查询日志,定位慢 SQL
- 用 Explain 分析执行计划
- 确认是否命中索引,是否可建联合索引
- 避免
SELECT *,减少回表 - 大分页用覆盖索引或延迟关联
- 统计信息不准时执行
ANALYZE TABLE
四、索引设计原则
- 频繁出现在 WHERE、JOIN、ORDER BY 的字段
- 区分度高的字段优先
- 避免冗余索引,定期清理
- 长字符串使用前缀索引
索引不是越多越好,适合的索引才能在高并发下保持数据库稳定。