#### 概念

一个sql语句在没有执行(运行)之前,先计算一下该sql语句需要调用的相关资源,再决定该sql语句是否要最终执行,该行为被称为“执行计划”。

#### 作用

主要用于分析sql语句的执行情况(并不执行sql语句)得到sql语句是否使用了索引,使用了哪些索引。

![](https://box.kancloud.cn/ae8cc55761ddfb56f0b36a4c9350a77b_735x779.png)

#### 语法

~~~

explain SQL语句;

~~~

结果

~~~

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+

| 1 | SIMPLE | t1 | NULL | ALL | NULL | NULL | NULL | NULL | 1 | 100.00 | NULL |

+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+

~~~

没有使用索引和解释

~~~

id: 1//SELECT识别符。这是SELECT查询序列号。这个不重要,查询序号即为sql语句执行的顺序.

select_type: SIMPLE//搜索类型,从最好到最差的连接类型为const、eq_reg、ref、range、 indexhe和ALL

table: t1//表名

partitions: NULL

type: ALL

possible_keys: NULL//显示可能应用在这张表中的索引。如果为null,没有可能的索引。

key: NULL// 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用

key_len: NULL//使用的索引的长度。在不损失精确性的情况下,长度越短越好.

ref: NULL//显示索引的哪一列被使用了,如果可能的话,是一个常数.

rows: 1//mysql认为必须检查的用来返回请求数据的行数.

filtered: 100.00

Extra: NULL

~~~

使用索引的情况

~~~

id: 1

select_type: SIMPLE

table: t1

partitions: NULL

type: const

possible_keys: PRIMARY

key: PRIMARY

key_len: 4

ref: const

rows: 1

filtered: 100.00

Extra: NULL

1 row in set, 1 warning (0.00 sec)

~~~

mysql 执行计划 优化_执行计划相关推荐

  1. 数mysql据分析优化_从零开始学习数据分析-mysql架构与优化理论

    mysql的逻辑分层:连接层 服务层 引擎层 存储层 引擎层主要分为两类:InnoDB.MyIsam(使用show engines;查看) InnoDB是事务优先的,会进行行锁,适合高并发操作 MyI ...

  2. MySQL线上优化_线上MySQL千万级大表,如何优化?

    前段时间应急群有客服反馈,会员管理功能无法按到店时间.到店次数.消费金额进行排序.经过排查发现是 SQL 执行效率低,并且索引效率低下. 图片来自 Pexels 应急问题 商户反馈会员管理功能无法按到 ...

  3. mysql查看执行计划任务_学习计划 mysql explain执行计划任务详解

    我们在之前已经找到了需要优化的SQL,但是怎么知道它的那些方面需要优化呢? explain就是为了这个使用的. explain显示了 mysql 如何使用索引来处理select语句以及连接表.可以帮助 ...

  4. Mysql 架构及优化之-定时计划任务

    概论 mysql计划任务可以定时更新数据库表或者做大文件的汇总表 配置 开启计划任务 SHOW VARIABLES LIKE 'event_scheduler' 查看是否开启 off 表示未开启 se ...

  5. mysql not in优化_实践中如何优化MySQL(收藏)

    SQL语句的优化: 1.尽量避免使用子查询 3.用IN来替换OR 4.LIKE前缀%号.双百分号._下划线查询非索引列或*无法使用到索引,如果查询的是索引列则可以 5.读取适当的记录LIMIT M,N ...

  6. mysql报表统计 优化_关于SQL调优与报表的性能优化

    前一段时间做了某产品实时统计的报表,这周在对报表性能进行优化. 其中逐步积累了一些优化经验,总结一下记录下来,欢迎大家一起探讨. 本文仅限于探讨单个数据库的查询sql及统计报表调优,不涉及分布式数据库 ...

  7. mysql insert 语句优化_分享insert into语句优化的小技巧

    MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ...

  8. mysql 字符串 索引优化_轻松优化MySQL-之索引优化1

    什么是索引?为什么要建立索引 索引用于快速找出在某个列中有一特定值的行,不使用索引MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大查询数据所花费的时间就越多,如果表中查询的列有一个索 ...

  9. mysql is null优化_如何优化mysql的is null?

    给大家安利下MySQL的最新手册,就是如何优化mysql的is null?包括如果编写mysql is null的语句. <MySQL使用手册>第二章主要讲述了优化程序如何处理WHERE子 ...

最新文章

  1. SDH点对点接入与MPLS有什么区别?——Vecloud
  2. dagger2 依赖注入
  3. (转)ubuntu 文件系统
  4. Python 技术篇 - 微信调用图灵机器人的api接口实现自动回复实例演示。图灵机器人的注册与使用
  5. 步步为营:Asp.Net序列化Json格式的两种方法
  6. 653B. Bear and Compressing
  7. Pentium的指令系统(1)——Pentium的寻址方式
  8. python之将python代码编译成.so
  9. 设置SUID用于提权或降权
  10. 99se 封装属性设置大全
  11. HTML开发者工具抓取所有图片,利用开发者工具,截取网页高清长图
  12. 思维导图的种类及应用,思维导图教程
  13. 路在何方 路在脚下 -- !!
  14. PHP调用wsdl接口实例化SoapClient抛出异常
  15. 天使爱美丽经典台词语录片段对白分享
  16. 客户关系管理(CRM)系统源码设计方案
  17. php导出excel无边框线,phpexcel设置边框不全或者只有竖线问题解决方法
  18. Android-蓝牙sco通话
  19. java文件加密解密实验报告_《网络信息安全技术》_实验报告_破译vigenamp#232;re_密码加密的密文...
  20. 服务器项目验签失败,服务器验签失败

热门文章

  1. 拓普微智能TFT液晶显示模块
  2. 关于跨DB增量(增、改)同步两张表的数据小技巧
  3. 案例39-后台查询订单详情代码实现
  4. jQuery元素操作
  5. nautilus出现一闪而过现象
  6. win7 安装好redis 如何安装扩展
  7. spring 动态数据源
  8. myBatis异常提示For input string: {1=null}
  9. 【CF888G】Xor-MST(最小生成树,Trie树)
  10. 微信公众平台开发教程(八)Session处理