一、EXPLAIN
1.作用:
EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。
- 表的读取顺序
- 数据读取操作的操作类型
- 哪些索引可以使用
- 哪些索引被实际使用
- 表之间的引用
- 每张表有多少行被优化器查询
2.使用方式
EXPLAIN + (SELECT语句)
SQL优化准则中,查询语句尽可能对每一条sql进行explain。
3.如何查看SQL的执行计划
id:
SELECT识别符,这是SELECT的查询序列号。 |
1.id相同,可以认为是一组,执行顺序由上至下。(图1、图2) 2.id不同,如果是子查询,id的序号会递增 ,id值越大优先级越高,越先被执行。(图3) 3.id相同不同,同时存在,id值越大优先级越高,越先被执行(图4) |
select_type: 分别用来表示查询的类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询 |
SIMPLE:简单SELECT(不使用UNION或子查询) PRIMARY:最外面的SELECT UNION:UNION中的第二个或后面的SELECT语句 DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询 UNION RESULT:UNION 的结果 SUBQUERY</ |