首页 > 数据库 >MySQL维护之如何查看执行计划

MySQL维护之如何查看执行计划

时间:2022-10-17 10:35:01浏览次数:72  
标签:查看 explain MySQL 查询 索引 使用 维护 执行

  实际上在MySQL索引原理之索引分析 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中已经使用到查看执行计划的命令explain,也进行了各列选项的解释。本文进行补充同时介绍如何分析一条SQL语句的执行性能及需要关注哪些信息。

  1)id:包含一组数字,表示查询中执行select子句或操作表的顺序;执行顺序从大到小执行:当id值 一样时,执行顺序由上往下。

  2)select_type:

    DERIVED:在FROM列表中包含的子查询被标记为DERIVED(衍生),或者说当一个表不是一个物理表时,那么就被叫作DERIVED。

  3)possible_keys:

    指出MySQL能使用哪个索引在表中找到行,查询涉及的字段上若存在索引,则该索引将被列出但不一定被查询使用。一个会列出大量可能的索引(如多于3个)的QEP意味着备选索引熟练太多了,同时也可能提示存在一个无效的单列索引。

  4)ref:表示上述表的连续匹配条件,即哪些列或常量被用于查找索引列上的值。

  5)extra:

      using join buffer:这个强调了在获取连续条件时没有使用索引,并且需要连续缓存区来存储中间结果。如果出现了这个值,则应该根据查询的具体情况可能需要添加索引来改进性能。

      impossible where:这个值强调了where语句会导致没有符合条件的行。

      select tables optimized away:这个值意味着仅通过使用索引,优化器可能仅从聚合函数结果中返回一行。

      distinct:这个值意味着MySQL在找到第一个匹配的行之后就会停止搜索其他行。

      index merges:当MySQL决定要在一个给定的表上使用超过一个索引时就会出现,用来详细说明使用的索引以及合并的类型。

      table:是explain命令输出结果中的一个单独行的唯一标识符。这个值可能是表名,表的别名或者一个为查询产生链式表的标识符,如派生表、子查询或集合。

      patitions:代表给定表所使用的分区。这一列只会在explain partitions语句中出现。

      filtered:给出了一个百分比的值,这个百分比值和rows列的值一起使用,可以估计出哪些将要和QEP中的前一个表进行连续的行的数目。前一个表就是指id列的值比当前表的id小的表。这一列只有在explain extended语句中才会出现。使用explain extended和 show warnings语句能够看到SQL在真正被执行之前优化器做老孔哪些SQL改写。

  那如何分析一条SQL遇见的执行性能及需要关注哪些信息呢?具体操作是:使用explain命令,观察type列可以知道是否是全表扫描、可以知道索引的使用形式;观察key可以知道使用了哪个索引;观察key_len可以知道索引是否使用完成;观察rows可以知道扫描的行数是否过多;观察extra可以知道是否使用了临时表和进行了额外的排序操作。

标签:查看,explain,MySQL,查询,索引,使用,维护,执行
From: https://www.cnblogs.com/ilovebath/p/16726379.html

相关文章

  • Ubuntu中如何查看网络路由表?
    buntu中如何查看网络路由表?路由表的主要作用是供路由器查找目标网络,进而确定转发接口及下一跳路由,完成数据包的转发功能,下面为大家详细讲解一下Ubuntu中查看网络路由表具体......
  • Mysql数据库巡检(二)
    Mysql数据库巡检(二)1.查看数据库版本mysql>selectversion();2.数据库端口mysql>showglobalvariableslike'port';![img](file:///C:\Users\Administrator\App......
  • MySQL单表访问方法
    参考:MySQL是怎样运行的:从根儿上理解MySQL一:前期准备1.创建测试表CREATETABLEsingle_table(idINTNOTNULLAUTO_INCREMENT,key1VARCHAR(100),key2INT,key3V......
  • MySQL目录结构与SQL基本概念
    MySQL目录结构1.MySQL安装目录配置文件my.ini1、bin目录用于放置一些可执行文件,如mysql.exe、mysqld.exe、mysqlshow.exe等。2、data目录用于放置一些日志文件......
  • mysql数据操作
    1.增insertinto表名(列名,列名)vlues(值,值),(值,值),(值,值),(值,值);2.删deletefrom表名;deletefrom表名where条件;deletefromtb7;deletefromtb7wh......
  • MySQL服务启动和关闭与MySQL登录和退出
     MySQL服务启动和关闭+                netstopMySQL80:启动mysql服务 netstart MySQL80:关闭mysql服务    ......
  • 谷歌查看密码
    1、打开密码管理器  2、 ......
  • docker安装tomcat、mysql、redis
    一、tomcat1.下载tomcat8dockerpulltomcat:8.5.612.启动容器(-d后台启动)dockerrun-d-p8080:8080tomcat:8.5.61 3.访问首页http://ip:8080/访问不到......
  • 关于idea的servcies和debug功能,services中查看启动的服务没有调试工具栏
    今晚踩了这个坑。。。全网找了半天都解决不了。由于微服务项目必须用到services的这个功能来管理微服务项目的启动/停止,以及多个微服务部署。所以必须用到services这个功......
  • mysql安装教程-window操作系统
    1、下载安装包(官网下载)直达链接:https://dev.mysql.com/downloads/mysql/       下载后放到指定目录下解压即可(给电脑新手忠告:注意不要放在C盘,养成好习惯......