首页 > 数据库技术 > 详细

mysql 重新整理——索引优化explain字段介绍一 [九]

时间:2020-06-01 00:11:58      阅读:53      评论:0      收藏:0      [点我收藏+]

前言

在七种介绍了explain这东西,那么具体来看下它是如何来运行的吧。

正文

id

来看一条语句:EXPLAIN select * from departments,dept_emp,employees

技术分享图片

当id相同的时候:代表在同一队列里面加载,就是说他们加载不是并发的,而是有顺序的。

然后一个问题,就是说我们写的顺序是:departments,dept_emp,employees ,然後你看他们的加载顺序是:departments,employees ,dept_emp。

然后看另外一条语句:

explain SELECT * FROM temployees  WHERE emp_no= (
SELECT dept_emp.emp_no

FROM dept_emp

WHERE dept_emp.dept_no=(

SELECT departments.dept_no 

FROM departments

WHERE departments.dept_name="Finance"
)
)

在此注明,上面表的东西呢,是mysql 官方测试表。

那么看一下:

技术分享图片

就算我们不看explain,其实我们也知道肯定是执行:departments,dept_emp,employees 。

所以是id越大越先执行。

总结一下:如果id相同,从上至下按照顺序执行,如果id不同,越大越先执行。

select_type

这个查询可以告诉我们到底是什么样的查询:

查询的类型,主要用于区别普通查询、联合查询、子查询等复杂的查询。

这里先列一下有哪些查询:

1.simple:简单的select,查询中不包含子查询或者union

2.primary:那个包含任何复杂的子查询,最外层查询则被标记为这个。

可以参考我前面这个图:

技术分享图片

3.subquery:在select 或者 where 列表中包含子查询

4.derived 在from 中包含的子查询被标记为derived,mysql会递归执行这些子查询,把结果放在临时表中。

5.union,如果第二个select 出现在union之后,则会标记为union。
如果union 包含在from 子句中的子查询中,外层的select 被标记为:derived。

6.union result 从union获取结果的select。

table

table 就非常简单了,就是表。

后语

后面补齐。

mysql 重新整理——索引优化explain字段介绍一 [九]

原文:https://www.cnblogs.com/aoximin/p/13020139.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!