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
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/15890247.html