MySQL 慢查询优化技巧
时间:2026-10-4 10:41 作者:emer 分类: 无
MySQL 慢查询优化实战技巧
数据库慢查询是生产环境最常见的性能问题之一。掌握慢查询优化技巧,能让系统性能提升数倍。
1. 开启慢查询日志
先开启慢查询日志,找出哪些 SQL 慢:
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /var/log/mysql/slow.log
超过1秒的查询就会被记录。
2. 用 Explain 分析
慢 SQL 拿到后,用 EXPLAIN 分析执行计划:
EXPLAIN SELECT * FROM users WHERE name = '张三';
重点看:
- type:访问类型,ALL 是全表扫描,要优化
- key:实际用到的索引
- rows:扫描行数
- Extra:额外信息,Using filesort、Using temporary 要警惕
3. 加索引
最直接的优化就是加索引:
ALTER TABLE users ADD INDEX idx_name(name);
加索引原则:
- WHERE、JOIN、ORDER BY 字段优先
- 区分度高的字段效果好
- 联合索引遵循最左前缀
4. 避免 SELECT *
只查需要的字段:
-- 不好
SELECT * FROM users WHERE id = 1;
-- 好
SELECT id, name FROM users WHERE id = 1;
5. 深分页优化
LIMIT 100000, 10 很慢,因为要扫描10万行:
-- 不好
SELECT * FROM users LIMIT 100000, 10;
-- 好,用子查询
SELECT * FROM users
WHERE id >= (SELECT id FROM users LIMIT 100000, 1)
LIMIT 10;
6. 大表拆小
单表数据量超过千万行,性能会下降。可以:
- 按时间分表
- 按用户ID分库
- 归档历史数据
7. 总结
慢查询优化的核心思路:先找慢 SQL,再分析执行计划,然后加索引或改写 SQL。优化完记得对比前后效果,确保真的变快了。