技术笔记

← 返回笔记列表

MySQL 索引优化与慢查询分析

📅 2025/11 🏷️ MySQL 数据库

数据库性能优化是后端开发的核心技能之一。MySQL 索引设计得当,能让查询效率提升几个数量级;设计不当,则会拖慢整个系统。

一、索引基础

索引是一种排好序的数据结构,常见实现为 B+ 树。它能快速定位数据,但会增加写入成本和存储空间。

  • B+ 树索引:范围查询和排序友好
  • Hash 索引:等值查询快,不支持范围
  • 全文索引:用于文本搜索
  • 联合索引:按最左前缀原则匹配

二、Explain 分析

通过 EXPLAIN 查看执行计划,重点关注:

  • type:访问类型,越靠前性能越好,如 const、ref、range、index、ALL
  • key:实际使用的索引
  • rows:扫描行数估算
  • Extra:Using index、Using where、Using filesort 等

三、慢查询优化思路

  1. 开启慢查询日志,定位慢 SQL
  2. 用 Explain 分析执行计划
  3. 确认是否命中索引,是否可建联合索引
  4. 避免 SELECT *,减少回表
  5. 大分页用覆盖索引或延迟关联
  6. 统计信息不准时执行 ANALYZE TABLE

四、索引设计原则

  • 频繁出现在 WHERE、JOIN、ORDER BY 的字段
  • 区分度高的字段优先
  • 避免冗余索引,定期清理
  • 长字符串使用前缀索引
索引不是越多越好,适合的索引才能在高并发下保持数据库稳定。