explain + 查询语句,会返回mysql处理sql语句的分析结果
EXPLAIN SELECT t1.t_id FROM table1 t1 WHERE t1.t_id = (SELECT MIN(t_id) FROM table2) UNION SELECT t3.t_id FROM table3 t3
结果:
1.id: 表的读取顺序
代表优先级,数字越大,先被加载
2.select_type : 数据读取操作的操作类型
simple 简单查询,没有复杂结构
primary 有子查询时,最外层的是primary
subquery 子查询
derived 衍生的,一般会出现在from 后面跟select 时(嵌套查询)。
union union查询后面的table会被标记为union
union result union 查询的结果
3. table: 表名
4. type:访问类型
性能从好到差依次是:
1. system(系统类型:单行数据,const的特例,等于系统表,基本见不到) = =不过我测试的时候就算一条数据也达不到system。。。
2. const(常量类型:利用 主键,或者union index)
3. eq_ref (唯一索引 (union index) 扫描,只有一条记录匹配。)
4. ref, (单行非唯一索引 (index) 扫描)
5. range,
6. index(索引查询),
7. ALL(全表扫描)
ref 或者 range 级别已经可以满足大部分需求。
5. possible_keys
6. key
7. key_len
8. ref
9. rows
10. Extra
原文:https://www.cnblogs.com/clamp7724/p/11811632.html