SQL的执行计划-->explain

284 阅读2分钟

这是我参与8月更文挑战的第13天,活动详情查看:8月更文挑战

explain(SQL优化工具标准)

使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是查看MySQL的语句是将一个优化器--分析查询语句表

如何处理你的SQL语句的? 分析你的查询语句或是表结构的性能瓶颈

本质上: SQL的执行计划,就是语句EXPLAIN

潜台词: 从而知道MySQL是如何处理SQL语句的,

2.执行Explain的一个模拟优化器(类似于高德地图的优化路线)

image.png

3.SQL的证据--(执行过程)

explain  SQL语句

select * from   tbl_dept;


explain  select * from tbl_dept;

image.png

相当于SQL的化验单;

4. 细节讲解:

image.png

4.1   id(为数字但是不是主键)

   决定了表的读取顺序---在多表联查中会遇见;select查询的序列号

  •   ID相同

image.png

  • ID不相同

image.png

加载的顺序是 t3,t1,t2来执行

  • D相同又不同:

image.png

这里的将ID相同的,放为一组直接进行数据访问,,

执行的顺序是T3,《derived》,t2

4.2  select_Type 查询类型:

image.png

简单, 主键,子查询, 伪表(临时表,虚表)

image.png

image.png

image.png

image.png

image.png

多条sql的union合并查询的结果:

image.png

4.3  Type:关键字

image.png

一般来说是:

system : 表示系统中数据只有一条;可以忽略不计

const: 表示查询一次就可以找到;--->直接可以将数据通过主键索引一次找到;

image.png

image.png

er_ref

ref"

这个是于数据有关系:

image.png

非唯一性索引扫描------>符合的所有匹配行;

image.png

image.png

Rang---》范围查询可能比较全表扫描的好;

image.png

image.png

index表示的事我们建立的主键索引是id

 然后我们正好查询的数据是id这一列;

    也及时说我们将数据直接变成====>  select  id from student where id

 索引和查询的列是一致的;

key:

image.png

possible _key就是表示可以--->prinary_key表示理论使用要是使用到的===>key 是表示实际要用的是;

image.png

索引扫描

image.png

ref:关键字

image.png

image.png

image.png