Explain

-- 使用
Explain + SQL

分析执行计划:

  • id:表示此表的执行优先级

    • id相同,表的执行顺序依次从上往下;

                   

    • id不同,并且递增,id值越大执行优先级越高,越先被执行;

      

  • select_type:读取一张表的操作类型

    • SIMPLE:简单SELECT查询,并且整个语句中的查询不包含<子查询>和<联合查询UNION>

    • PRIMARY:复杂查询中最外层查询,即PRIMARY

    • SUBQUERY:子查询``

    • DERIVED:衍生,FROM后面跟的子查询; select * from (select * from t1 where id = 1) d1

    • UNION:联合查询

    • UNION RESULT:UNION合并的结果集;

  • table:表示这一行操作,是哪一张表的

  • type:表示此条查询的检索方式(7种,下面是按照效率由高到低排列)

    • system:基本用不到,表示一张表,只有一条记录;

    • const: where id = 1 指定的常量查询;

    • eq_ref:唯一索引扫描;对于某个索引键,表中只有一条记录与之匹配;(比如id主键索引)

    • ref:非唯一索引扫描; where name = 'ZhangSan' ,如果ZhangSan不止一个人,且name字段建有索引,那么就是ref检索;

    • range: where id between 30 and 60 或者类似 where id in (1,3,5)

    • index: select id from user 其中id是主键索引;

    • ALL:表明检索方式为全表扫描;出ALL类型检索,需要优化。

  • possible_keys:可能用到的索引

  • key:实际使用的索引

  • key_len:索引中使用的字节数

    

  • ref:MySQL 用来与索引值进行比较的值。单次 const表示的是对常数进行比较,若是某个列的名称,则表示逐个比较列。

  • rows:大致估算出每张表有多少行记录被查询了

  • Extra:额外信息

    • Using filesort:文件排序,在无法通过索引来进行排序的情况下,就会默认使用文件排序;如果出现此信息,表示需要优化;

    • Using temporary:使用临时表,表示在排序时,使用了临时表;也是提示我们,此语句需要优化;

    • Using index:表明相应的查询操作中,使用了覆盖索引

      如果同时伴有Using where:表明索引被用来执行索引键值的查找;

    

      如果不带有Using where:表明索引用来读取数据,而非查找动作;

    

    • impossible where:表示错误的where,比如 where name = 'lisi' and name = 'zhangsan'

    • distinct:自动优化distinct关键字,在找到第一条匹配项后停止

Explain例子

表的执行顺序:

  1. 【select name, id from t2】

  2. 【select id, name from t1 where other_column = ' '】子查询

  3. 【select id, from t3 】衍生查询

  4. 【select d1.name ...】最外层查询

  5. UNION操作

【MySql】Explain笔记的更多相关文章

  1. MySQL Explain学习笔记

    目录 一.执行计划概念 二.Explain用法 三.Explain属性介绍 3.1 id属性 3.2 select_type属性 3.3 table属性 3.4 type属性 3.5 possible ...

  2. 【开发笔记】- MySQL EXPLAIN用法和结果的含义

    转自:http://blog.chinaunix.net/uid-540802-id-3419311.html explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择 ...

  3. MySQL入门笔记

    MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: ·          rpm包形式 ·          通用二进制 ...

  4. mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化

    可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...

  5. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  6. 一千行MySQL学习笔记 (转)

    出处:  一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...

  7. mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记

    mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...

  8. mysql explain type详解

    本文转载自最官方的 mysql explain type 字段解读 读了很多别人的笔记都杂乱不堪,很少有实例,什么都不如原装的好,所以当你读到我的笔记的时候如果觉得说的不明白,最好参考官方的手册. 我 ...

  9. 【转载】 mysql explain用法

    转载链接:  mysql explain用法 官网说明:     http://dev.mysql.com/doc/refman/5.7/en/explain-output.html 参数:  htt ...

  10. MySQL学习笔记02_数据库和表的基本操作

    02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...

随机推荐

  1. Jmeter里http接口的执行顺序是顺序执行

    1,如果在一个线程组里则是顺序执行 2,如果不在一个线程组里,就勾选独立运行各个线程组,在一个运行结束后启动下一个线程组

  2. 【Java】单点登录(SSO)

    单点登录介绍 ​ SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一 ...

  3. 嵌入式LINUX基础教程 第2版

    嵌入式LINUX基础教程  第2版 目录 第1章 入门 11.1 为什么选择Linux 11.2 嵌入式Linux现状 21.3 开源和GPL 21.4 标准及相关组织 31.4.1 Linux标准基 ...

  4. 【Python学习之九】模块

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 一.模块的使用和安装模块和C语言中的头文件以及Ja ...

  5. 【视频开发】【Live555】摄像头采集,264编码,live555直播

    加入 摄像头采集和264编码,再使用live555直播 1.摄像头采集和264编码 将x264改成编码一帧的接口,码流不写入文件而是直接写入内存中(int  Encode_frame 函数中). /* ...

  6. Linux服务器安装rocketMQ单机消息队列

    首先下载rocketMQ 1.解压: > unzip rocketmq-all-4.3.0-source-release.zip > cd rocketmq-all-4.3.0/ > ...

  7. LInux学习之路

    linux 简单操作命令 cd 进入目录 ls 查看 ll详细查看 man ls -- help touch mkdir find 正则表达式 ? [] [a-z][0-9] {字符串,} {a..z ...

  8. 08 Spring框架的概念、优势、体系结构、耦合性和IOC(反转控制)

    1.spring介绍 Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control: 反转控制)和 AOP(Aspect ...

  9. centos7+ 在线yum安装docker-ce

    yum install -y yum-utils   //扩展yum功能 yum-config-manager --add-repo http://mirrors.aliyun.com/docker- ...

  10. Spark 系列(十三)—— Spark Streaming 与流处理

    一.流处理 1.1 静态数据处理 在流处理之前,数据通常存储在数据库,文件系统或其他形式的存储系统中.应用程序根据需要查询数据或计算数据.这就是传统的静态数据处理架构.Hadoop 采用 HDFS 进 ...