如果在SELECT语句前放上关键词EXPLAIN,MySQL将解释它如何处理SELECT,提供有关表如何联接和联接的次序。
EXPLAIN的每个输出行提供一个表的相关信息,并且每个行包括下面的列:
1.id SELECT识别符。这是SELECT的查询序列号。
2.select_type 可以为一下任何一种类型
SIMPLE 简单SELECT(不使用UNION或子查询)
PRIMARY 最外面的SELECT
UNION UNION中的第二个或后面的SELECT语句
DEPENDENT UNION UNION中的第二个或后面的SELECT语句,取决于外面的查询
UNION RESULT UNION的结果。
SUBQUERY 子查询中的第一个SELECT
DEPENDENT SUBQUERY 子查询中的第一个SELECT,取决于外面的查询
DERIVED 导出表的SELECT(FROM子句的子查询)
3.table 输出的行所引用的表。
4. type 联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序:
system 表仅有一行(=系统表)。这是const联接类型的一个特例。
const 表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!
eq_ref 对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。它用在一个索引的所有部分被联接使用并且索引是UNIQUE或PRIMARY KEY
ref 对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。如果联接只使用键的最左边的前缀,或如果键不是UNIQUE或PRIMARY KEY(换句话说,如果联接不能基于关键字选择单个行的话),则使用ref。如果使用的键仅仅匹配少量行,该联接类型是不错的。
ref可以用于使用=或<=>操作符的带索引的列。
possible_keys 如果该列是NULL,则没有相关的索引。在这种情况下,可以通过检查WHERE子句看是否它引用某些列或适合索引的列来提高你的查询性能。如果是这样,创造一个适当的索引并且再次用EXPLAIN检查查询
key 列显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。
5. rows rows列显示MySQL认为它执行查询时必须检查的行数。
相关推荐
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。
总之,掌握`EXPLAIN`的使用是提升MySQL查询性能的关键步骤,它让我们能够深入理解查询的执行过程,为数据库优化提供有力的支持。在开发和维护数据库系统时,定期使用`EXPLAIN`分析复杂查询,可以有效避免不必要的...
#### 三、EXPLAIN 的高级用法 - **Extended EXPLAIN**:除了基本的 EXPLAIN 之外,还可以使用 `EXPLAIN FORMAT=JSON` 或 `EXPLAIN EXTENDED` 来获得更详细的执行计划信息,包括 `ROWS_EXAMINED_PER_EXECUTION` 和 `...
为了更好地理解 EXPLAIN 的使用方法,下面我们通过一个具体的例子来进行说明: 假设有一个名为 `employees` 的表,结构如下: ``` CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR...
- index_merge: 使用多个索引合并的方法。 - unique_subquery: 用于IN子查询中的唯一值查找。 - index_subquery: 类似于unique_subquery,但针对索引子查询。 - range: 使用索引查找指定范围内的行。 - all: 全...
MySQL Explain 详解 MySQL Explain 是 MySQL 中的一个重要工具,用于解释和优化 SQL 查询语句。通过 Explain,可以了解 MySQL 是如何执行查询语句的,并且可以根据 Explain 的结果来优化查询语句。 一、用法 ...
#### 1.2 使用方法 要使用`Explain`,只需在`SELECT`语句前加上`EXPLAIN`关键字即可,例如: ```sql EXPLAIN SELECT * FROM t3 WHERE id = 3952602; ``` 这将返回一个结果集,其中包含了关于查询执行方式的详细信息...
使用方法,在select语句前加上explain就可以了: explain select count(DISTINCT uc_userid) as user_login from user_char_daily_gameapp_11 where uc_date >= "2017-09-04" and uc_date<="2017-09-08" AND
MySQL中的`EXPLAIN`命令是用于分析SQL查询执行计划的重要工具,它可以帮助数据库管理员和开发者了解MySQL如何处理SQL语句,从而优化查询性能。在处理慢查询时,`EXPLAIN`是不可或缺的辅助手段。 一、`EXPLAIN`基本...
它提供了一种查看MySQL如何执行SELECT语句的方法,帮助我们理解查询计划、索引使用情况以及潜在的性能瓶颈。下面是对MySQL EXPLAIN的详细解读。 1. **语法** `EXPLAIN` 命令的基本语法是在SELECT语句之前添加`...
### MySQL中EXPLAIN命令详解 #### 一、概述 在MySQL数据库管理中,查询优化是一项非常重要的工作。通过优化查询,不仅可以提升查询速度,还能节省系统资源...希望本文能帮助您更好地理解和使用MySQL的`EXPLAIN`功能。
本讲义将深入探讨`EXPLAIN`的使用方法及其背后的原理。 一、EXPLAIN基本用法 `EXPLAIN`关键字用于在不实际执行查询的情况下,分析MySQL如何执行SQL查询。通过在SELECT语句之前添加`EXPLAIN`,我们可以得到查询执行...
【explain的用法】在IT领域,特别是在数据库管理和SQL查询优化中,`explain`是一个非常重要的工具。它允许我们分析MySQL以及其他数据库系统如何执行SELECT语句,帮助我们理解查询的执行计划,从而找出可能的性能瓶颈...
使用方法,在select语句前加上explain就可以了: 如: mysql> explain select * from kt_course order by create_time desc; +----+-------------+-----------+------+---------------+------+---------+------+---...
MySQL的`EXPLAIN`命令是数据库管理员和开发者用于分析SQL查询执行计划的重要工具。通过`EXPLAIN`,我们可以深入了解查询如何工作,以及如何优化数据库性能。以下是对`EXPLAIN`命令各个列的详细解释: 1. **id**: ...
21.MySQL高级_explain使用简介.avi 20.MySQL高级_性能分析前提知识.avi 19.MySQL高级_哪些情况不适合建索引.avi 18.MySQL高级_哪些情况适合建索引.avi 17.MySQL高级_索引结构与检索原理.avi 16.MySQL高级...
├第一天视频,网盘文件,永久连接 01.MySQL高级课程内容介绍.mp4 ...15.MySQL高级优化SQL步骤explain之keyrowsextra.avi 16.MySQL高级优化SQL步骤showprofile.avi 17.MySQL高级优化SQL步骤trace工具.avi 18. .....