Mysql优化之Explain详解

1、Explain关键字介绍

在 MySQL 中,使用 EXPLAIN 关键字可以查看查询的执行计划,了解查询在数据库内部的处理过程。EXPLAIN 语句会返回一组列,每一列都提供了关于查询执行的详细信息。

2、Explain中的列

以下是 EXPLAIN 输出的各列的详细说明:
在这里插入图片描述

1.id

  • 这是查询的序列号,表示执行计划中每个查询的顺序
  • 示例: 1

2.select_type

  • 指定查询的类型,例如简单查询、联合查询或子查询
  • 可能的值: SIMPLEPRIMARYUNIONSUBQUERYDEPENDENT SUBQUERY
  • 示例: SIMPLE

3.table

  • 表示查询中涉及的表名或别名
  • 示例: users

4.type

  • 访问类型,表示 MySQL 查找行的方式
  • 可能的值: systemconsteq_refrefrangeindexALL
  • 依次从最优到最差分别为:system > const > eq_ref > ref > range > index > ALL
  • 示例: ref

5.possible_keys

  • 查询可能使用的索引列表
  • 示例: PRIMARY, user_id

6.key

  • 实际使用的索引
  • 示例: PRIMARY

7.key_len

  • 使用的索引的长度
  • 示例: 4

8.ref

  • 显示列的内容与索引比较
  • 示例: const, u.id

9.rows

  • MySQL 估计要读取的行数
  • 示例: 100

10.filtered

  • 表示查询条件过滤掉的行的百分比
  • 示例: 100.00

11.Extra

  • 提供额外的信息,描述查询执行中的细节
  • 可能的值: Using whereUsing temporaryUsing filesort
  • 示例: Using where

3、Explain的使用

假设我们有如下查询:

EXPLAIN SELECT o.id, u.name 
FROM orders o 
JOIN users u ON o.user_id = u.id 
WHERE u.status = 'active'


可能的 EXPLAIN 输出如下:

| id | select_type | table  | type   | possible_keys | key        | key_len | ref      | rows | filtered | Extra       |
|----|-------------|--------|--------|---------------|------------|---------|----------|------|----------|-------------|
|  1 | SIMPLE      | u      | const  | PRIMARY       | PRIMARY    | 4       | const    |    1 |   100.00 | Using where |
|  1 | SIMPLE      | o      | ref    | user_id       | user_id    | 4       | u.id     |    5 |   100.00 |             |

各列解释:

  • id: 1,表示这是查询中的第一步
  • select_type: SIMPLE,表示这是一个简单查询,没有子查询或联合查询
  • table: u,表示查询涉及 users 表
  • type: const,表示对 users 表的查找是通过主键进行的,效率很高
  • possible_keys: PRIMARY,表示可能使用的索引是主键
  • key: PRIMARY,表示实际使用的索引是主键
  • key_len: 4,表示使用的索引长度是 4 字节
  • ref: const,表示使用常量值与索引列进行比较
  • rows: 1,表示 MySQL 估计需要读取一行数据
  • filtered: 100.00,表示查询条件没有过滤掉任何行
  • Extra: Using where,表示查询条件中的 WHERE 子句正在使用

4、总结

通过分析 EXPLAIN 的输出,可以识别查询性能瓶颈,并进行优化。

例如,确保查询使用了适当的索引,避免全表扫描,从而提高查询性能

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值