用法:explain sql语句;

id:查询的序号。

ref:进行连接查询时,表得连接关系。可以通过上图看出。

select_type:select查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。有simple(不含子查询)和primary,

primary可分为 subquery(非form子查询)、derived(from子查询)、union、union result。

table:针对表名,可以是表的实际名、表的别名、null 、derived。

possible_key:可能用到的索引。

key:最终用到的索引。

key_len:使用索引得最大长度。

type:查询的方式,可能的值如下。 (优化重点)

all,意味着从第一行开始往后查找。(查询效率最低)

index , 扫描所有的索引节点。(查询效率比all好,至少用到了索引)

range , 查询时能根据索引的范围进行扫描。(在用到索引时,缩小了范围,比上面index效率高)

ref , 通过索引列,能直接引用到某些列。(效率比range高)

eq ref ,通过索引列,能直接引用到某一列列。(效率比ref高)

const ,system,null   都指查询优化到常量级别。(查询效率最高级别)

Extra:(优化重点)

为index,用到了索引覆盖,效率极高。

using where ,光靠索引定位不行,还得加上where条件。

using temporary 用到临时表。

using filesort 用到文件排序。

注意:如果要排序、分组的数据有text / medium text ,那么排序/分组会发生在磁盘上。

通过如下语句查看排序是在内存中还磁盘中进行:

MySQL——explain性能分析的使用的更多相关文章

  1. mysql Explain 性能分析关键字

    EXPLAIN 输出格式select_typetabletypepossible_keyskeykey_lenrowsExtra MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT ...

  2. MySQL 索引性能分析概要

    上一篇文章 MySQL 索引设计概要 介绍了影响索引设计的几大因素,包括过滤因子.索引片的宽窄与大小以及匹配列和过滤列.在文章的后半部分介绍了 数据库索引设计与优化 一书中,理想的三星索引的设计流程和 ...

  3. MySQL优化 - 性能分析与查询优化(转)

    出处:  MySQL优化 - 性能分析与查询优化 优化应贯穿整个产品开发周期中,比如编写复杂SQL时查看执行计划,安装MySQL服务器时尽量合理配置(见过太多完全使用默认配置安装的情况),根据应用负载 ...

  4. MySQL索引性能分析

    为什么要做性能分析 你有没有这样的情况. 面对一个你没怎么写过的.复杂的业务,你构思了很久,终于开始敲下了第一段代码. 写的过程迷迷糊糊,有的时候还能把自己搞晕了. 但你还是终于把它写完了. 但是点击 ...

  5. MySQL优化 - 性能分析与查询优化

    优化应贯穿整个产品开发周期中,比如编写复杂SQL时查看执行计划,安装MySQL服务器时尽量合理配置(见过太多完全使用默认配置安装的情况),根据应用负载选择合理的硬件配置等. 1.性能分析 性能分析包含 ...

  6. MySQL高级-性能分析Explain

    1.使用Explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的.分析你的查询语句或是表结构的性能瓶颈 . 2.执行方法:Explain + SQL语句 解释 ...

  7. 【mysql】explain性能分析

    1. explain的概念 使用EXPLAIN 关键字可以模拟优化器执行SQL 查询语句,从而知道MySQL 是如何处理你的SQL 语句的.分析你的查询语句或是表结构的性能瓶颈. 用法: Explai ...

  8. [MySQL]--查询性能分析工具-explain关键字

    explain显示了MySQL如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. explain的使用方法很简单,只需要在select查询语句前面加上expl ...

  9. mysql语句性能分析案例

    写法不一样而功能完全相同的两条 SQL 的在性能方面的差异.示例一需求:取出某个 group(假设 id 为 100)下的用户编号(id),用户昵称(nick_name).用户性别( sexualit ...

随机推荐

  1. django国际化总结

    转:http://blog.csdn.net/ybdesire/article/details/46806739

  2. Svn使用遇到的错误

    1. 权限不足导致的错误

  3. CAN总线远程帧和错误帧

    远程帧 通常,数据传输是由数据源节点(例如,传感器发出数据帧)自主完成的.但也可能存在目标节点向源节点请求发送数据的情况.要做到这一点,目标节点需发送一个远程帧,其中的标识符应与所需数据帧的标识符相匹 ...

  4. mongodb配置和基本操作

    MongoDB3.0新特性WiredTigerMMAPv1可插拔引擎API基于web的可视化管理工具 查看版本号mongod --version启动数据库 mongod --dbpath $dbpat ...

  5. git 远程仓 和 本地仓 记录

    一.远程仓添加信息后 ,本地环境修改信息后,上传 远程仓 coding=utf-8 本地仓 coding=utf-8 本地仓同步后 会提示存在冲突: (其中 HEAD 是当前非支的意思,可以理解为当前 ...

  6. [PYTHON 实作] 算100

    问题:编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性.例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100 ...

  7. git版本控制-详细操作

    - git,软件帮助使用者进行版本的管理 阶段一git 命令: git init 初始化 git config --global user.email "you@example.com&qu ...

  8. ZedGraph类库之基本教程篇

      第一部分:基本教程篇                 ZedGraphDemo中一共有9个基本教程的例子.其中大部分都类似,我会讲解其中一些比较典型的例子.把ZedGraph类库的使用逐步展现给大 ...

  9. jmeter json截取

    前些日子压测我们系统,发现我们开发把cookie值当成一个参数返回到了json中,这样就要从json中获取这个cookie后配置到cookie 管理器中 Jmeter中本身是不支持直接处理json串的 ...

  10. C语言的第二天-比较大小的小程序

    #include <stdio.h> int main() { int a,b,c,max; printf("请输入三个数:"); scanf("%d,%d, ...