mysql explain查询执行计划id 含义

逻辑极光
• 阅读 80

在EXPLAIN语句输出的执行计划中,id列表示了SELECT查询的序列号,它是查询中每个SELECT的执行顺序编号,有几个SELECT就有几个序列号,按照从上到下的顺序执行。

具体来说:

  1. id相同的数据行属于同一个SELECT,执行顺序由上往下。
  2. id不同的数据行属于不同的SELECT,id的序号越大,越先执行。
  3. id序号相同的数据行为同一个SELECT,先根据table名字的顺序找到所有的数据行,再从上往下依次查询。
  4. id序号越大,优先级越高,越先被执行。
  5. id序号越小,优先级越低,越晚被执行。

例如,对于下面这个查询的执行计划:

EXPLAIN SELECT * 
FROM table1 
JOIN table2 ON table1.id = table2.id
LEFT JOIN table3 ON table1.id = table3.id;

输出结果可能是:

+----+-------------+--------+--------+---------------+---------+---------+------+------+-------------+
| id | select_type | table  | type   | possible_keys | key     | key_len | ref  | rows | Extra       |
+----+-------------+--------+--------+---------------+---------+---------+------+------+-------------+
|  1 | SIMPLE      | table1 | ALL    | NULL          | NULL    | NULL    | NULL |    1 | NULL        |
|  1 | SIMPLE      | table2 | ALL    | PRIMARY       | NULL    | NULL    | NULL |    1 | Using join buffer (Block Nested Loop) |
|  1 | SIMPLE      | table3 | ALL    | PRIMARY       | NULL    | NULL    | NULL |    1 | Using join buffer (Block Nested Loop) |
+----+-------------+--------+--------+---------------+---------+---------+------+------+-------------+

可以看到这里有一个id为1的SELECT查询,它的执行顺序是先查table1,再查table2,最后查table3。

所以通过id列可以清楚地看到MySQL对这个查询的执行顺序和方式。这对于分析查询性能、优化查询等都是很有帮助的。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL千万级别优化·中
MySQL千万级别的查询优化手段·中单列索引(假设在v\_record表中存在id列的索引)1、WHERE条件使用​EXPLAINSELECT\FROMv\_recordWHEREid2​结论:利用索引进行回表查询2、SELECT字段使用
Wesley13 Wesley13
3年前
Oracle——分页查询
查询员工表中,工资排名在1020之间的员工信息。select  from(    selectrownumrn,employee_id,salary      from(        selectemployee_id,salary,last_name        fromem
Stella981 Stella981
3年前
Explain(MySQL高级知识四)
前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。explain主要用于分析查询语句或表结构的性能瓶颈。注:本系列随笔如无特殊说明都MySQL版本都为5.7.22。1.explain的作用通过explainsql语句可以知道如下内容:①表的读取顺序。(
Wesley13 Wesley13
3年前
MySQL EXPLAIN 详解
一.介绍  EXPLAIN命令用于SQL语句的查询执行计划。这条命令的输出结果能够让我们了解MySQL优化器是如何执行SQL语句的。这条命令并没有提供任何调整建议,但它能够提供重要的信息帮助你做出调优决策。先解析一条sql语句,你可以看出现什么内容1EXPLAIN SELECT
Wesley13 Wesley13
3年前
SQL语句优化
SQL语句优化规范:1\.使用mysqlexplain对sql执行效率进行检测,explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。1)使用方法:在select语句前加上explain即可2)explain分析结果形式如下:table|type
Wesley13 Wesley13
3年前
mysql笔记
如果需要查询id不是连续的一段,最佳的方法就是先找出id,然后用in查询SELECT\FROMtableWHEREidIN(10000,100000,1000000...);索引列上使用in速度是很快的1.SELECT\FROMtableORDERBYidLIMIT1000000,10;
Wesley13 Wesley13
3年前
mysql explain执行详解
!(https://oscimg.oschina.net/oscnet/c6df6d3229fc511bc625bc3a89f58c7b0ce.png)1)、id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询。2)、select\_type列常见的有:A:
Wesley13 Wesley13
3年前
MySQL查询优化
在我们使用MySQL数据库时,比较常用也是查询,包括基本查询,关联查询,条件查询等等,对于同一个操作,SQL语句的实现有很多种写法,但是不同的写法查询的性能可能会有很大的差异。这里主要介绍下select查询优化的要点。1\.使用慢查询日志去发现慢查询。2\.使用执行计划去判断查询是否正常运行。3\.总是去测试你的查询
Wesley13 Wesley13
3年前
mysql 执行计划explain详解
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/u012410733/article/details/66472157explain主要是用来获取一个query的执行计划,描述mysql如何执行查询操作、执行顺序,使用到的索引,以及mysql成功返回结果集需要执行的行数。可以帮助我们分析select语
Wesley13 Wesley13
3年前
EXPLAIN 命令详解
执行计划包含的信息|id|select\_type|table|type|possible\_keys|key|
小万哥 小万哥
1年前
深入理解 SQL UNION 运算符及其应用场景
SQLUNION运算符SQLUNION运算符用于组合两个或多个SELECT语句的结果集。每个UNION中的SELECT语句必须具有相同数量的列。列的数据类型也必须相似。每个SELECT语句中的列也必须按照相同的顺序排列。UNION语法sqlSELECTco