之前是一直没有听过explain这个关键字的, 最近因为项目中总是会有慢查询的一些操作, 所以请教了旁边的同事帮忙排查下原因, 看到同事用explain来分析一些sql语句, 感觉好像发现了新大陆一样。

于是自己也来学习下并总结自己学到的一些知识,如有问题欢迎拍砖。

首先来做个测试, 我这里有一张表: t_jiakao_keyword, 数据量在60W左右。
1, select * from t_jiakao_keyword

然后使用explain进行各种查询:

通过主键id去查询,其中有几个关键的指标需要关注:
首先看下 type 这列的结果,如果有类型是 ALL 时,表示预计会进行全表扫描(full table scan)。通常全表扫描的代价是比较大的,建议创建适当的索引,通过索引检索避免全表扫描。此外,全索引扫描(full index scan)的代价有时候是比全表扫描还要高的,除非是基于InnoDB表的主键索引扫描。

再来看下 Extra 列的结果,如果有出现 Using temporary 或者 Using filesort 则要多加关注:
Using temporary,表示需要创建临时表以满足需求,通常是因为GROUP BY的列没有索引,或者GROUP BY和ORDER BY的列不一样,也需要创建临时表,建议添加适当的索引。

Using filesort,表示无法利用索引完成排序,也有可能是因为多表连接时,排序字段不是驱动表中的字段,因此也没办法利用索引完成排序,建议添加适当的索引。

Using where,通常是因为全表扫描或全索引扫描时(type 列显示为 ALL 或 index),又加上了WHERE条件,建议添加适当的索引。
暂时想到上面几个,如果有遗漏,以后再补充。

其他状态例如:Using index、Using index condition、Using index for group-by 则都还好,不用紧张。

最后放出所有字段的一些说明及含义。sql查询最重要的是合理使用索引, 关键点还是在索引!


mysql性能分析之explain的用法相关推荐

  1. MySQL性能分析及explain的使用

    MySQL性能分析及explain用法的知识是本文我们主要要介绍的内容,接下来就让我们通过一些实际的例子来介绍这一过程,希望能够对您有所帮助. 1.使用explain语句去查看分析结果 如explai ...

  2. Mysql性能分析关键字Explain详解(附例子 )

    文章目录 Explain 1. 定义(是什么) 2. 作用(能干嘛) 3. 使用(怎么玩) 4. 各字段解释 Explain 1. 定义(是什么) 使用EXPLAIN关键字可以模拟优化器执行SQL查询 ...

  3. MySQL系列-高级-性能分析工具-EXPLAIN

    MySQL系列-高级-性能分析工具-EXPLAIN 1. EXPLAIN概述 1.1 官网介绍 1.2 EXPLAIN 基本语法 2. 基于函数和存储过程插入数据 2.1 创建表 2.2 创建函数和过 ...

  4. MySQL 索引分析除了 EXPLAIN 还有什么方法?

    作者 | adrninistrat0r 责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 前言 对于非数据库开发人员而言,难以对MySQL源码进行分析或调试,接近一个黑盒,但MySQL提供 ...

  5. MySQL 性能分析 之 联合索引(复合索引)实践分析

    MySQL 性能分析 之 联合索引(复合索引)实践分析 作为开发者,大家都知道,一个服务器.一个数据库的性能是项目的重中之重,后台架构.写法与数据库设计的好坏往往直接影响到整个项目的性能. 索引:是当 ...

  6. MySQL性能分析 一

    一.数据库服务器优化步骤 下面流程展示了优化的步骤,可以理解为三个步骤:慢查询.EXPLAIN和SHOW PROFILING. 二.查看系统性能参数 在MySQL中,可以使用SHOW STATUS语句 ...

  7. 死磕数据库系列(三十三):MySQL 性能分析与相关工具的使用

    点关注公众号,回复"1024"获取2TB学习资源! 今天我将详细的为大家介绍 MySQL 性能分析以及相关工具使用的相关知识,希望大家能够从中收获多多!如有帮助,请点在看.转发支持 ...

  8. explain ref_MySQL 性能分析神器 —— EXPLAIN 用法与解读。

    ↑ 点击上面 "时代Java"关注我们,关注新技术,学习新知识! EXPLAIN作为MySQL的性能分析神器,读懂其结果是很有必要的,然而我在各种搜索引擎上竟然找不到特别完整的解读 ...

  9. 011 MySQL性能分析

    一.性能分析的思路 1.首先需要使用[慢查询日志]功能,去获取所有查询时间比较长的SQL语句: 2.其次[查看执行计划]查看有问题的SQL的执行计划 explain: 3.最后可以使用[show pr ...

最新文章

  1. 浮动元素会引起的问题和你的解决办法
  2. [转]C#网络编程(异步传输字符串) - Part.3
  3. Django 模型层(1)
  4. 精华【分布式、微服务、云架构dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!...
  5. jpg图片与jpeg图片格式的区别(没有区别,.jpg只是扩展名.jpeg的缩写)
  6. B. Quasi Binary
  7. MySQL之mysql客户端工作的批处理一些使用手法
  8. SpringBoot整合RabbitMQ测试
  9. sql数据库实例(c#查询登录界面)
  10. svn版利用什么技术实现_金葱粉涂料印花利用了什么技术?
  11. php 两个符号怎么打,怎么打出圈2符号
  12. 基于Django实现RBAC权限管理
  13. HTML5 CSS选择器总结(强烈推荐)
  14. JavaScript 中的异步:Event Loop 及其他
  15. 【VRP】基于matlab蚁群算法求解多配送中心的车辆调度问题【含Matlab源码 1098期】
  16. 【学习笔记】福州大学网络课程 网络空间安全概论(1,4)
  17. 明翰大数据Spark与机器学习笔记V0.1(持续更新)
  18. 华为OD机试 - 士兵过河
  19. 分布式理论:CAP 是三选二吗?
  20. 【转】FET场效应晶体管扫盲

热门文章

  1. PO模式-unittest
  2. Git1天打卡 day13-查看仓库文件改动状态
  3. 功能测试工程师想快速学习新技术?7个捷径教给你!
  4. python如何实现日期格式的转换_python开发中时间格式如何转化?
  5. D-S证据理论基本概念
  6. matlab虚拟现实之使用V-Realm Builder2建模
  7. 转:matlab中print、fprintf、scanf、disp函数简要语法介绍
  8. 音频放大电路_集成电路技术汇总:检测技巧
  9. websocket.onmessage回调没反应_等待A股暴跌回调补四缺口倒计时第二十四天——8月19日总结...
  10. linux某用户 计划任务,Linux基本计划任务