mysql 索引ref_MySQL索引优化-性能分析Explain(转)

本文详细介绍了MySQL的Explain工具,用于分析SQL查询的执行计划,包括表的读取顺序、数据读取操作类型、索引使用情况等。通过分析`id`、`select_type`、`table`、`type`、`possible_keys`、`key`、`ref`、`rows`和`Extra`等字段,帮助优化查询性能,减少全表扫描,提高查询效率。
摘要由CSDN通过智能技术生成

1. explain是什么

使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。

2. explain能干吗

可用于分析:

表的读取顺序

数据读取操作的操作类型

哪些索引可以使用

哪些索引被实际使用

表之间的引用

每张表有多少行被优化器查询

3. explain怎么分析

执行计划包含的信息如下:

b00fa9ba99d5480b856eaf06f15c196b.png

各字段解释

3.1 id

select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序。

分为三种情况:

3.1.1 id相同,执行顺序由上至下

a040b9becdaecebd22cb0a6b6c0c9f33.png

id相同,执行顺序从上到下,搭配table列进行观察可知,执行顺序为t1->t3->t2。

3.1.2 id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行

969475085073ddaf63a8b483bd9eb12b.png

如果是子查询id的序号会递增,id值越大执行优先级越高,搭配table列可知,执行顺序为t3->t1->t2。

3.1.3 id相同不同,同时存在

8ddcef4f151139ceb91710b495749683.png

id如果相同,可认为是同一组,执行顺序从上到下。在所有组中,id值越大执行优先级越高。所以执行顺序为t3->derived2(衍生表,也可以说临时表)->t2。

总结:id的值表示select子句或表的执行顺序,id相同,执行顺序从上到下,id不同,值越大的执行优先级越高。

3.2 select_type

SIMPLE: 简单的select查询,查询中不包含子查询或者UNION

PRIMARY: 查询中包含任何复杂的子查询,最外层查询被标记为PRIMARY

SUBQUERY: 在SELECT或WHERE列表中包含子查询

DERIVED: 在FROM列表中包含的子查询被标记为DERIVED(衍生),MySQL会递归执行这些子查询,把结果放在临时表里

UNION: 若第二个SELECT出现在UNION之后,则被标记为UNION; 若UNION包含在FROM子句的子查询中,外层SELECT被标记为: DERIVED

UNION RESULT: 从UNION表获取结果的SELECT

3.3 table

显示这一行的数据是关于哪张表的

3.4 type

访问类型,显示查询使用了何种类型,从最好

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值