mysql - mysql解释输出中语句顺序的意义是什么?

标签 mysql sql-execution-plan

这是我正在研究的查询之一的 mysql 解释计划。

+----+-------------+--------+-------+---------------+---------+---------+------+------+-------+
| id | select_type | table  | type  | possible_keys | key     | key_len | ref  | rows | Extra |
+----+-------------+--------+-------+---------------+---------+---------+------+------+-------+
|  1 | SIMPLE      | table2 | index | NULL          | PRIMARY | 4       | NULL |    6 |       | 
|  1 | SIMPLE      | table3 | ALL   | NULL          | NULL    | NULL    | NULL |   23 |       | 
|  1 | SIMPLE      | table1 | ALL   | NULL          | NULL    | NULL    | NULL |    8 |       | 
|  1 | SIMPLE      | table5 | index | NULL          | PRIMARY | 4       | NULL |    1 |       | 
+----+-------------+--------+-------+---------------+---------+---------+------+------+-------+

一组 4 行(0 秒)

此输出中语句顺序的意义是什么? 这是否意味着表 5 在所有其他表之前被读取?

最佳答案

表按照 MySQL 在处理查询时读取它们的顺序列在输出中。你可以read more about the Explain plan output here .

此外,输出告诉我:

  • 优化器认为查询中包含四 (4) 个 SELECT 语句。作为“简单”选择类型,这些查询不使用 UNION 或子查询。
  • 其中两个语句可以使用索引(基于 type 列),它们是主键(基于 key 列)。另外两个不能使用任何索引。

关于mysql - mysql解释输出中语句顺序的意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3124100/

相关文章:

mysql - 如何从 MySQL 数据库的不同表中提取创建语句?

sql - 直接执行语句和从存储过程执行语句时的执行计划不同

sql-server - 为什么 SQL 在我的例子中选择了不正确的索引?

SQL 优化 - 执行计划根据约束值更改 - 为什么?

sql - Oracle 在解析 prepared statement 时是否选择了默认的执行计划?

php - Mysql在错误的用户ID中输入数据(图像)并且数据库自动创建新的用户ID

php - 在 php 中只运行一次更新查询

mysql - 带空格的 SQL 表名

java - MySQL 中的切换行语句不返回任何内容

sql-server - MS SQL 执行计划中未使用的列