一、执行计划命令
- EXPLAIN SELECT ……
- EXPLAIN EXTENDED SELECT ……
在1的基础上,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句
二、查看执行计划
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
---|---|---|---|---|---|---|---|---|---|---|---|
每列说明
- id:数字,表示查询中执行select子句或操作表的顺序,id相同,执行顺序由上至下
- select_type:查询中每个select子句的类型,常见值
- SIMPLE:查询中不包含子查询或者UNION
- PRIMARY:查询中若包含任何复杂的子部分,最外层查询为PRIMARY
- SUBQUERY:在SELECT或WHERE列表中包含了子查询,该子查询为SUBQUERY
- DERIVED:在FROM列表中包含的子查询为DERIVED
- UNION:若第二个SELECT出现在UNION之后,则为UNION
- UNION RESULT:从UNION表获取结果的SELECT
- table:表名或表别名
- type:如何查找到行,常见值
- ALL:全表扫描
- index:全索引树扫描
- range:索引范围扫描
- ref:使用普通索引
- eq_ref:使用主键或唯一索引
- const、system:常量匹配
- possible_keys:可能用到的索引
- key:实际使用的索引
- key_len:使用索引长度
- ref:关联字段
- rows:查询需要访问的行数
- Extra:十分重要的额外信息,常见值
- Using index:使用覆盖索引
- Using temporary:使用临时表
- Using filesort:无法利用索引完成的排序操作称为“文件排序”