慢查询优化的核心是读懂执行计划,理解优化器为何选择特定索引与连接顺序。
一、EXPLAIN 关键字段
sql
EXPLAIN SELECT * FROM orders WHERE user_id = 100 AND status = 'PAID';type:访问类型,const>eq_ref>ref>range>index>ALLkey:实际使用的索引rows:预估扫描行数Extra:Using index表示覆盖索引,Using filesort表示额外排序
二、索引下推(ICP)
MySQL 5.6 引入索引条件下推,将 WHERE 中可在索引上判断的条件下推到存储引擎层过滤,减少回表次数。开启后 Extra 显示 Using index condition。对联合索引 (user_id, status),查询 user_id = 100 AND status = 'PAID' 可完全在索引层完成过滤。