MySQL 数据库性能优化指南
数据库往往是 Web 应用的性能瓶颈。本文总结了 MySQL 优化的核心策略。
1. 索引优化
索引是提升查询速度最有效的手段。
1.1 最左前缀原则
如果有一个联合索引 `(a, b, c)`,以下查询可以使用索引:
SELECT * FROM table WHERE a = 1;
SELECT * FROM table WHERE a = 1 AND b = 2;
SELECT * FROM table WHERE a = 1 AND b = 2 AND c = 3;
以下查询不能使用索引(或只能部分使用):
SELECT * FROM table WHERE b = 2; -- 无法使用
SELECT * FROM table WHERE c = 3; -- 无法使用
SELECT * FROM table WHERE a = 1 AND c = 3; -- 只能使用 a 部分
1.2 覆盖索引
尽量让查询的字段包含在索引中,避免回表查询。
-- 假设有索引 (user_id, username)
SELECT user_id, username FROM users WHERE user_id = 100;
-- 此时不需要回表查聚簇索引,速度极快
2. 查询优化 (Explain)
使用 `EXPLAIN` 关键字分析 SQL 执行计划。
| 列名 | 含义 | 理想值 |
|---|---|---|
| type | 访问类型 | const > eq_ref > ref > range > index > ALL |
| key | 实际使用的索引 | 不为 NULL |
| rows | 扫描行数 | 越小越好 |
| Extra | 额外信息 | 避免 Using filesort, Using temporary |
3. SQL 编写规范
- 避免使用 SELECT *:只查询需要的字段。
- 避免在 WHERE 子句中对字段进行函数操作:会导致索引失效。
- ❌ `WHERE YEAR(create_time) = 2023`
- ✅ `WHERE create_time BETWEEN '2023-01-01' AND '2023-12-31'`
- 大分页优化:使用 `id` 范围查询替代 `LIMIT 100000, 10`。
4. 总结
优化 MySQL 需要结合具体的业务场景,通过监控和分析工具(如 Slow Query Log)找到瓶颈,有针对性地进行调整。

发表评论 取消回复