MySQL 慢查询定位与索引优化
慢查询不是玄学,掌握定位方法和索引原则就能治。
数据库一慢,业务就卡。慢查询的排查有一套固定套路,掌握了能解决大部分问题。
先找到慢的 SQL
打开 MySQL 的慢查询日志,或者用 show processlist 实时观察正在执行的 SQL。
再用 EXPLAIN 分析
EXPLAIN 能告诉你一条 SQL 有没有走索引、扫描了多少行。重点关注 type 和 rows 两列。
EXPLAIN SELECT * FROM orders WHERE user_id = 100;
索引的黄金法则
- where、order by、group by 的列建索引
- 最左前缀:联合索引要从最左列开始命中
- 避免在索引列上做函数运算
常见误区
不是索引越多越好。索引会拖慢写入,还占空间。只给真正高频查询的字段建索引。