在 Ubuntu 上 MySQL 出现慢查询(Slow Query),通常不是单一原因,而是多种因素叠加。下面从常见原因 → 排查方法 → 优化建议系统说明。
这是最常见原因。
LIKE '%xxx%'DATE(create_time))✅ 表现:
SELECT * FROM user WHERE name LIKE '%tom%';
SELECT *JOIN 多张表但无索引ORDER BY / GROUP BY 无法走索引常见参数不合理:
innodb_buffer_pool_size # 太小(默认可能只有 128M)
max_connections # 太小,导致排队
query_cache_type # MySQL 8 已移除
tmp_table_size
sort_buffer_size
SHOW VARIABLES LIKE 'slow_query_log';
开启:
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
Ubuntu 日志位置:
/var/log/mysql/mysql-slow.log
EXPLAIN SELECT * FROM orders WHERE user_id = 10;
重点看:
SHOW PROCESSLIST;
或:
mysqladmin processlist
pt-query-digest /var/log/mysql/mysql-slow.log
innodb_buffer_pool_size = 1G # 物理内存的 60~70%
ALTER TABLE user ADD INDEX idx_name (name);
SELECT id, name FROM user;
LIMIT 20 OFFSET 0;
云服务器尤其重要。
你可以直接贴出:
EXPLAIN 结果SHOW CREATE TABLE)mysql -V)我可以精准告诉你哪一句慢、为什么慢、怎么改最快 ✅