文章目录
- 函数
- SQL优化
- 表分区
- 索引
- 水位线
- 执行计划,explain
函数
SQL优化
表分区
索引
水位线
执行计划,explain
EXPLAIN
是 MySQL 中的一个关键字,用于解释查询执行计划,帮助你理解查询是如何执行的以及使用了哪些索引。执行 EXPLAIN
命令后,MySQL 会返回一组结果,称为"执行计划"或"查询计划",用于优化查询性能。
下面是 EXPLAIN
命令的语法:
EXPLAIN SELECT your_columns FROM your_table WHERE your_conditions;
以下是 EXPLAIN
结果中常见的列和其含义:
-
id
: 这是一个数字,表示查询中执行的序列号。如果查询是复合查询(例如使用子查询或连接),那么id
将有多个不同的值。 -
select_type
: 表示查询的类型,常见的取值有:SIMPLE
: 简单查询,不包含子查询或 UNION。PRIMARY
: 复合查询中的最外层查询。SUBQUERY
: 子查询。UNION
: UNION 查询。DEPENDENT SUBQUERY
: 依赖外部查询的子查询。DERIVED
: 衍生表,临时表。
-
table
: 显示与查询相关的表名。 -
partitions
: 显示查询涉及的分区,如果表使用了分区。 -
type
: 表示表访问的方式,是一个重要的性能指标。常见的取值有:ALL
: 全表扫描,需要遍历所有记录。index
: 索引扫描,遍历索引树。range
: 范围扫描,使用索引的一部分。ref
: 使用非唯一索引进行查找。const
: 表示使用主键或唯一索引查找,最多返回一行数据。eq_ref
: 类似const
,但是在连接操作中使用,返回匹配的行。
-
possible_keys
: 表示查询可能使用的索引列表。 -
key
: 表示实际选择的索引。如果没有选择索引,则为 NULL。 -
key_len
: 表示索引使用的字节数。这对于分析索引的效率很有用。 -
ref
: 显示哪个列或常数与索引一起使用。 -
rows
: 表示 MySQL 估计在执行查询时需要扫描的行数。 -
filtered
: 表示在WHERE
条件中过滤的行的百分比。 -
Extra
: 提供额外的执行信息,如使用了临时表、文件排序等。
通过阅读 EXPLAIN
结果,你可以了解 MySQL 是如何处理查询的,以及是否有效地使用了索引。这有助于你优化查询语句和表结构,以提高查询性能。