0
点赞
收藏
分享

微信扫一扫

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语句来执行即可;

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

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

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

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

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

3.Navicat解释计划

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

mysql 查看解释计划的两种方式_子查询_03

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

写在最后

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



举报

相关推荐

0 条评论