引言

查询优化是提升MySQL性能的关键。本文介绍实用的查询优化技巧。

一、慢查询分析

1
2
3
4
5
6
7
8
9
-- 开启慢查询日志
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 2; -- 超过2秒记录

-- 查看慢查询配置
SHOW VARIABLES LIKE 'slow_query%';

-- 分析慢查询日志
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log

二、SQL优化技巧

2.1 避免SELECT *

1
2
3
4
5
-- ✗ 不好
SELECT * FROM users;

-- ✓ 好
SELECT id, name, email FROM users;

2.2 使用LIMIT分页

1
2
3
4
5
-- ✗ 深分页性能差
SELECT * FROM users LIMIT 1000000, 10;

-- ✓ 使用ID范围
SELECT * FROM users WHERE id > 1000000 LIMIT 10;

2.3 避免子查询

1
2
3
4
5
-- ✗ 子查询
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);

-- ✓ JOIN
SELECT u.* FROM users u INNER JOIN orders o ON u.id = o.user_id;

三、索引优化

1
2
3
4
5
6
7
8
-- 查看索引使用情况
EXPLAIN SELECT * FROM users WHERE name = 'Alice';

-- 添加合适的索引
CREATE INDEX idx_name ON users(name);

-- 删除无用索引
DROP INDEX idx_unused ON users;

四、查询缓存

1
2
3
4
-- 查看缓存配置(MySQL 5.7及以下)
SHOW VARIABLES LIKE 'query_cache%';

-- MySQL 8.0已移除查询缓存,建议使用应用层缓存

总结

MySQL查询优化要点:

  1. 分析慢查询:找出性能瓶颈
  2. 优化SQL:避免SELECT *、使用LIMIT
  3. 添加索引:提高查询效率
  4. 使用缓存:减少数据库压力

参考资料