mysql or 阿里云RDS 随记

文章目录

    • 函数
    • SQL优化
      • 表分区
      • 索引
      • 水位线
      • 执行计划,explain

函数

SQL优化

表分区

索引

水位线

执行计划,explain

EXPLAIN 是 MySQL 中的一个关键字,用于解释查询执行计划,帮助你理解查询是如何执行的以及使用了哪些索引。执行 EXPLAIN 命令后,MySQL 会返回一组结果,称为"执行计划"或"查询计划",用于优化查询性能。

下面是 EXPLAIN 命令的语法:

EXPLAIN SELECT your_columns FROM your_table WHERE your_conditions;

以下是 EXPLAIN 结果中常见的列和其含义:

  1. id: 这是一个数字,表示查询中执行的序列号。如果查询是复合查询(例如使用子查询或连接),那么 id 将有多个不同的值。

  2. select_type: 表示查询的类型,常见的取值有:

    • SIMPLE: 简单查询,不包含子查询或 UNION。
    • PRIMARY: 复合查询中的最外层查询。
    • SUBQUERY: 子查询。
    • UNION: UNION 查询。
    • DEPENDENT SUBQUERY: 依赖外部查询的子查询。
    • DERIVED: 衍生表,临时表。
  3. table: 显示与查询相关的表名。

  4. partitions: 显示查询涉及的分区,如果表使用了分区。

  5. type: 表示表访问的方式,是一个重要的性能指标。常见的取值有:

    • ALL: 全表扫描,需要遍历所有记录。
    • index: 索引扫描,遍历索引树。
    • range: 范围扫描,使用索引的一部分。
    • ref: 使用非唯一索引进行查找。
    • const: 表示使用主键或唯一索引查找,最多返回一行数据。
    • eq_ref: 类似 const,但是在连接操作中使用,返回匹配的行。
  6. possible_keys: 表示查询可能使用的索引列表。

  7. key: 表示实际选择的索引。如果没有选择索引,则为 NULL。

  8. key_len: 表示索引使用的字节数。这对于分析索引的效率很有用。

  9. ref: 显示哪个列或常数与索引一起使用。

  10. rows: 表示 MySQL 估计在执行查询时需要扫描的行数。

  11. filtered: 表示在 WHERE 条件中过滤的行的百分比。

  12. Extra: 提供额外的执行信息,如使用了临时表、文件排序等。

通过阅读 EXPLAIN 结果,你可以了解 MySQL 是如何处理查询的,以及是否有效地使用了索引。这有助于你优化查询语句和表结构,以提高查询性能。

你可能感兴趣的:(数据库,mysql,阿里云,数据库)