当前位置 博文首页 > yuanting_的博客:MYSQL执行计划

    yuanting_的博客:MYSQL执行计划

    作者:[db:作者] 时间:2021-08-25 10:11

    分析mysql执行计划

    前言 : 一直以为都不太明白explain执行计划有什么用处,今天特意抽出来一个时间,着重了解一下执行计划里面的字段都是一些什么意思;(看其他博主都是一大篇的前言,今天有时间自己也来说几句,哈哈哈哈哈哈)

    在这里插入图片描述
    在这里插入图片描述
    第一个查询是全表扫描,第二个是索引扫描

    **id : **
    select_type : 是否是复杂语句
    tbale : 表名 或者 表别名
    **partitions : **
    type : all是全表扫描 index 通过索引扫描
    possible_keys : 可能可以利用的索引的名字。这里的索引名字是创建索引时指定的索引昵称;如果索引没有昵称,则默认显示的是索引中第一个列的名字。默认索引名字的含义往往不是很明显
    key : 它显示了MySQL实际使用的索引的名字。如果它为空(或NULL),则MySQL不使用索引
    key_len : 索引中被使用部分的长度,以字节计。
    ref : 它显示的是列的名字(或单词“const”),MySQL将根据这些列来选择行。在本例中,MySQL根据三个常量选择行。
    rows : MySQL所认为的它在找到正确的结果之前必须扫描的记录数。显然,这里最理想的数字就是1
    **filtered : **
    Extra : 这里可能出现许多不同的选项,其中大多数将对查询产生负面影响。在本例中,MySQL只是提醒我们它将用WHERE子句限制搜索结果集

    字段名字段意思字段值
    id表格查询的顺序编号降序查看,id相同的从上到下查查看。id可以为null ,当table为( union ,m,n )类型的时候,id为null,这个时候,id的顺序为 m跟n的后面。
    select_type查询的方式
    table表格名称表名,别名,( union m,n )。
    partitions分区名称查询使用到表分区的分区名。
    type表连接的类型1. SIMPLE : 简单查询方式们不是呀UNION跟子查询;?2.PRIMARY : 该表格位于最外层开始查询,通常会跟其他查询方式组合;?3.UNION : UNION第一个SELECT 为PRIMARY,第二个以及之后的所有SELECT 为UNION SELECT TYPE ; ?4.UNION RESULT : 每个结果集取出来后,会做合并操作,这个操作就是UNION RESULT;
    possible_keys可能使用到的索引这里的索引只是可能会有到,实际不一定会用到。
    key使用到的索引实际使用的索引。
    key_len使用到索引的长度比如多列索引,只用到最左的一列,那么使用到索引的长度则为该列的长度,故该值不一定等于 key 列索引的长度。
    ref谓词的关联信息当 join type 为 const、eq_ref 或者 ref 时,谓词的关联信息。
    可能为 :null(非 const \ eq_ref \ ref join type 时)、const(常量)、关联的谓词列名。
    rows扫描的行数该表格扫描到的行数。这里注意在mysql里边是嵌套链接,所以,需要把所有rows相乘就会得到查询数据行关联的次数
    filtered实际显示行数占扫描rows的比例实际显示的行数 = rows * filtered / 100
    extra特性使用
    cs
    下一篇:没有了