zoukankan      html  css  js  c++  java
  • explain相关

    explain介绍
    使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈
    1、表的读取顺序
    2、数据读取操作的操作类型
    3、哪些索引可以使用
    4、哪些索引被实际使用
    5、表之间的引用
    6、每张表有多少行被优化器查询

    explain列含义

    id:相同,执行顺序由上至下 ;不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行
    select_type: 表示select的类型;SIMPLE 代表简单表,不用表连接或子查询,PRIMRY 主查询(外层查询),UNION UNION中的第二个或者后面的查询语句,SUBQUERY 子查询中的第一个SELECT;
    table:输出结果集的表;
    ref:显示索引的哪一列被使用了,如果有可能是一个常数,哪些列或常量被用于查询索引列上的值
    possible_keys:查询中可能用到的索引;
    key:查询中实际用到的索引;
    key_len 索引的长度;
    rows 扫描的行数;
    type:访问类型 下面几种:
    下面的值,从左到右,性能由最差到最好
    ALL,index,range,ref,eq_ref,const,system,NULL
    ALL:全表扫描
    index:索引全扫描
    range: 索引的范围扫描 用于<,<=,>,>=,between等操作
    ref:使用非唯一索引扫描或者唯一索引的前缀扫描;
    eq_ref:使用唯一索引扫描,多表链接中使用primary key或unique key作为关联条件;
    const/system:单表中只有一个匹配行,查询速度快,根据主键或唯一索引进行的查询;
    NULL:mysql不用访问表或者索引,直接能够得到结果

    Extra
    Using filesort:说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。MySQL中无法利用索引完成的排序操作称为“文件排序”。
    Using temporary:使用了用临时表保存中间结果,MySQL在对查询结果排序时使用临时表。常见于排序order by和分组查询group by。
    Using index:表示相应的select操作中使用了覆盖索引(Covering Index),避免访问了表的数据行,效率不错。如果同时出现using where,表明索引被用来执行索引键值的查找;如果没有同时出现using where,表明索引用来读取数据而非执行查找动作。
    Using join buffer:表明使用了连接缓存,比如说在查询的时候,多表join的次数
    非常多,那么将配置文件中的缓冲区的join buffer调大一些。
    EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况
    部分统计信息是估算的,并非精确值
    在5.6以及以后的版本中,除过select,其他比如insert,update和delete均可以使用explain查看执行计划

  • 相关阅读:
    Hive-03 常用函数
    linux定时运行命令脚本crontab
    Flink| time| watermark| Windows窗口
    多个线程运行MR程序时hadoop出现的问题
    maxwell实时同步mysql中binlog
    Hive-04 参数调优
    gopm的使用和更新go语言
    flutter的成功
    数据库系统概论--数据模型
    mysql设置编码格式--支持中文
  • 原文地址:https://www.cnblogs.com/aowumiaomiao/p/15492355.html
Copyright © 2011-2022 走看看