MySQL 索引优化总结

发布时间:2026-03-28 | 分类:数据库 | 以下内容均为假数据

数据量从几万增长到几百万后,慢查询通常不是“数据库不行”,而是索引设计与 SQL 写法没有贴合业务访问路径。下面是一次虚拟电商订单表优化记录。

1. 问题场景

高频接口是“按用户 + 时间范围 + 状态查询订单列表”,高峰期接口平均耗时 420ms,偶发超过 1s。SQL 大致如下:

SELECT id, order_no, amount, status, created_at
FROM t_order
WHERE user_id = ?
  AND status = ?
  AND created_at BETWEEN ? AND ?
ORDER BY created_at DESC
LIMIT 20;

2. 索引设计思路

针对该场景,最终使用联合索引:(user_id, status, created_at)

3. EXPLAIN 观察重点

优化时不要只看“有没有索引”,要看“是否命中正确索引 + 扫描代价是否下降”。

4. 常见踩坑

5. 优化结果(假数据)

优化后平均耗时从 420ms 降到 38ms,P95 从 1.1s 降到 120ms,数据库 CPU 峰值下降约 23%。说明索引策略与访问模式基本匹配。

← 返回首页