SQL调优---explain执行计划及详细解析

使用explain获取执行计划进行优化,type至少在range及以上,而非all

1、id:每个select都会对应一个id,id值越大,执行优先级越高,相同的id值,从上往下依次执行。

2、select_type:查询类型

 select_type 类型

  • (1)simple:简单查询,不包含子查询和 union;
  • (2)primary:复杂查询的最外层查询;
  • (3)subquary:包含在select中不包含在from的子查询;
  • (4)derived:包含在from中的子查询,mysql会把这些数据放到临时表中,也称为派生查询;
  • (5)union:在union中第二个和随后的select。

3、table:表示 explain 正在访问哪张表。

4、type:表示关系类型或者访问类型,即 mysql 如何查找表中的行。

type 类型:

  • (1)NULL:MySQL在优化阶段分解查询语句,在执行阶段不需要访问索引树或表的查询类型。
  • (2)system:这是常量的特殊情况。当表中只有一条数据时,常量查询为system。
  • (3)const:MySQL优化了查询的一部分,并将其转换为常量。将主键与常量进行比较时,表最多返回一条记录。
  • (4)eq_ref:当主键或非主键索引的所有部分都被引用时,最多只返回一条记录。简单选择查询不会显示此类型。
  • (5)ref:使用唯一索引是不实际的。如果使用公共索引或唯一索引的前缀部分,则与值进行比较时,索引可能会返回多行
  • (6)range:范围扫描,in between
  • (7)index:可以通过扫描整个索引获得结果。通常,扫描二级索引。此扫描不会从根节点开始快速搜索,而是直接扫描辅助索引的子节点。速度相对较慢。这种查询通常用于覆盖索引。次要索引通常较小,比所有索引都快
  • (8)All:全表扫描,扫描聚集索引的所有单词节点。通常,这种情况需要优化。

5、possible_keys:这一列显示可能用到哪些索引。

6、key:mysql在查询过程中使用到的索引。

7、key_len:mysql在查询中使用索引的长度。

8、ref:显示在key列记录的索引中,表查找时所用到的列或常量,常见的有 const 常量,字段名 film.id。

9、rows:根据表统计信息及索引选用情况,大致估算出找到所需要的记录所需要读取的行数(即每张表有多少行被优化器查询),所需读取的行数越少越好。

10、extra:额外信息,常见的重要信息,例如 useing index 使用覆盖索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值