MySQL索引优化分析2—Explain性能分析

本文详细介绍了MySQL的EXPLAIN关键字及其在分析SQL查询性能中的作用。通过EXPLAIN,我们可以查看执行计划,了解表的读取顺序、索引使用、数据读取操作类型、行数等关键信息,帮助我们优化查询语句和表结构。重点关注的字段有type(访问类型)、key(实际使用的索引)、rows(预计扫描的行数)和Extra(额外信息),以减少filesort和using temporary的使用,提高查询效率。

上一节讲到Mysql中索引的概述,那数据库执行一条SQL查询语句,其性能除了查询所耗时间这种表现指标之外,有没有什么能够分析SQL查询语句的执行效果的工具?

这里就可以使用Mysql中提供了EXPLAIN关键字。

1. Explain概述


1.1 是什么

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

官网介绍

1.2 能干什么:查看执行计划

EXPLAIN语句提供关于SELECT语句执行计划的信息

EXPLAIN为SELECT语句中使用的每个表返回一行信息。它按照MySQL在处理语句时读取表的顺序列出输出中的表。MySQL使用嵌套循环连接方法解析所有连接。这意味着MySQL从第一个表读取一行,然后在第二个表、第三个表中找到匹配的行,以此类推。当所有表都被处理后,MySQL通过表列表输出所选的列和回溯,直到找到一个有更多匹配行的表为止。从该表读取下一行,然后继续处理下一个表。

根据Explain执行计划可以得出:

  • 表的读取顺序
  • 哪些索引可以使用
  • 数据读取操作的操作类型
  • 哪些索引被实际使用
  • 表之间的引用
  • 每张表有多少行被物理查询

1.3 如何使用

1.Explain执行语法:

Explain SQL语句;

2.Explain语句的执行结果:执行计划

在这里插入图片描述

2.执行计划各字段解释

没有排序和分组,则综合看type,key,key_len,rows
有分组和排序时,额外看Extra看是否使用额外排序
Extra中的红色属性


1.id

1.字段含义:

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

2.分为三种情况:

  • 1)id相同,执行顺序由上至下

在这里插入图片描述

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

在这里插入图片描述

  • 3)id相同和不同
    • id如果相同,可以认为是一组,从上往下顺序执行;
    • 在所有组中,id值越大,优先级越高,越先执行

在这里插入图片描述

3.关注点:

  • id号每个号码,表示一趟独立的查询;
  • 一个sql 的查询趟数越少越好。

2.select_type

用于表示查询的类型。

1.有哪些
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值