mysql 查看解释计划的两种方式

1.情景展示

在进行SQL编写的过程中,我们为了提高SQL的执行效率,通常会使用解释计划,来看看当前SQL还有没有优化的空间。

查看explain的方式有两种。

2.expalin+SQL语句

语法:explain + format=json + SQL语句

EXPLAIN format = json SELECT
t.town_code,
count( 1 ) c 
FROM
	town_village_mapping t 
GROUP BY
	t.town_code;

将其当做SQL语句来执行即可;

将输出结果复制出来即可查看。

"using_temporary_table": true,表示:该SQL使用了内部临时表;

"access_type": "ALL",表示:该SQL使用了全表扫描。

3.Navicat解释计划

新建一个查询窗口--》将SQL语句粘贴进去--》点击“解释”即可。

type:all,表示全表扫描;

extra:using temporary,表示使用了内部临时表。

2022年4月28日10:40:48

4.select_type

select_type的类型有哪些?

select_type 类型 含义
SIMPLE 简单的 select 查询,查询中不包含子查询或者UNION
PRIMARY 查询中若包含任何复杂的子部分,最外层查询则被标记为Primary
SUBQUERY 在SELECT或WHERE列表中包含了子查询
DEPENDENT SUBQUERY 在SELECT或WHERE列表中包含了子查询,子查询基于外层
UNCACHEABLE SUBQUREY 无法被缓存的子查询
DERIVED 在FROM列表中包含的子查询被标记为DERIVED(衍生);MySQL会递归执行这些子查询, 把结果放在临时表里。
UNION 若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包含在FROM子句的子查询中,外层SELECT将被标记为:DERIVED。
UNION RESULT 从UNION表获取结果的SELECT

SQL语句实际执行先后顺序:

From → On → Join → Where  → Group by → Having → Select → Distinct → Union → Order by → Limit

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2022-02-13 20:19  Marydon  阅读(412)  评论(0编辑  收藏  举报