MySQL慢查询定位三板斧:慢日志+EXPLAIN+索引

来源:互联网 时间:2026-08-25

网站卡顿不一定是代码慢,很可能是数据库在硬扛。MySQL慢查询日志是最直接的突破口,先把执行时间长的SQL抓出来,再一条条用EXPLAIN看执行计划,最后加索引或者改写法。

 开启慢日志很简单,在my.cnf里加三行,重启MySQL即可。注意long_query_time单位是秒,线上可以先设1秒,抓到明显拖后腿的语句。

[mysqld]

slow_query_log = 1

slow_query_log_file = /var/log/mysql/slow.log

long_query_time = 1

log_queries_not_using_indexes = 1

抓到慢SQL后,用EXPLAIN看type列。如果出现ALL,说明是全表扫描,必须优化。理想情况至少达到range,最好到ref或eq_ref。

EXPLAIN SELECT * FROM orders WHERE user_id = 123 AND create_time > '2026-08-01';

 

-- 给常用查询列加复合索引

CREATE INDEX idx_user_time ON orders(user_id, create_time);

索引不是越多越好。写操作会因为索引而变慢,而且索引文件本身也占空间。原则是高频查询、WHERE条件里的等值列优先建,范围查询列放在复合索引后面。

相关文章

标签:

A5创业网 版权所有

返回顶部