慢查询与 EXPLAIN
打开慢日志
SET PERSIST slow_query_log = ON;
SET PERSIST long_query_time = 1;
SET PERSIST log_output = 'FILE';
文件路径看 slow_query_log_file。日志里可能有业务数据,转存前脱敏。
Performance Schema 的 events_statements_summary_by_digest 适合看「哪类 SQL 最耗」。
SELECT digest_text, count_star, avg_timer_wait/1e12 AS avg_s
FROM performance_schema.events_statements_summary_by_digest
ORDER BY sum_timer_wait DESC
LIMIT 20;
EXPLAIN
EXPLAIN FORMAT=TREE
SELECT id, status
FROM shop_app.orders
WHERE user_id = 42
AND created_at >= '2026-01-01';
传统表格里优先看:
type:ref/range通常好过ALLkey:有没有用到你以为的索引rows:估行Extra:Using filesort、Using temporary
8.0 的 EXPLAIN ANALYZE 会真跑,别在高峰对超大结果集直接做。
注意
缺索引不是唯一原因。隐式转换、函数包列、or 两端类型不一致,都会让索引失效。先把谓词写干净,再加索引。