当前位置: 首页 > news >正文

EXPLAIN使用分析

系列文章目录


文章目录

  • 系列文章目录
  • 一、type说明
  • 二、MySQL中使用Show Profile
    • 1.查看当前profiling配置
    • 2.在会话级别修改profiling配置
    • 3.查看profile记录
    • 4.要深入查看某条查询执行时间的分布


一、type说明

在这里插入图片描述
我们只需要注意一个最重要的type 的信息很明显的提现是否用到索引:
type结果值从好到坏依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

all:全表扫描

index:另一种形式的全表扫描,只不过他的扫描方式是按照索引的顺序

range:有范围的索引扫描,相对于index的全表扫描,他有范围限制,因此要优于index

ref: 查找条件列使用了索引而且不为主键和unique。其实,意思就是虽然使用了索引,但该索引列的值并不唯一,有重复。这样即使使用索引快速查找到了第一条数据,仍然不能停止,要进行目标值附近的小范围扫描。但它的好处是它并不需要扫全表,因为索引是有序的,即便有重复值,也是在一个非常小的范围内扫描。

const:通常情况下,如果将一个主键放置到where后面作为条件查询,mysql优化器就能把这次查询优化转化为一个常量。至于如何转化以及何时转化,这个取决于优化器

一般来说,得保证查询至少达到range级别,最好能达到ref,type出现index和all时,表示走的是全表扫描没有走索引,效率低下,这时需要对sql进行调优。

当extra出现Using filesor或Using temproary时,表示无法使用索引,必须尽快做优化。

possible_keys:sql所用到的索引

key:显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL

rows: 显示MySQL认为它执行查询时必须检查的行数。

这里可以参考之前写的一篇:用MySQL 执行计划分析 DATE_FORMAT 函数对索引的影响

二、MySQL中使用Show Profile

Show profile 默认是禁用的,用处是记录在服务器中运行的查询耗费的时间和其他一些查询执行状态变更相关的数据。

1.查看当前profiling配置

show variables like ‘profiling%’

2.在会话级别修改profiling配置

set profiling =1

我在执行这个语句是,返回给我

0 row(s) affected, 1 warning(s): 1287 ‘@@profiling’ is deprecated and will be removed in a future release.

看这个提示,似乎后期的版本profiling会有变动

3.查看profile记录

show profiles

当一条查询提交给服务器时,此工具会记录剖析信息到一张临时表,并为每个查询赋予一个从1开始的整数标识符。

4.要深入查看某条查询执行时间的分布

show profile for query <整数标识符>

http://www.lryc.cn/news/120514.html

相关文章:

  • 布局性能优化:安卓开发者不可错过的性能优化技巧
  • Python 中的机器学习简介:多项式回归
  • docker 容器中执行命令出现错误: 13: Permission denied
  • JavaWeb学习|JavaBean;MVC三层架构;Filter;Listener
  • arx 外部参照文件(XREF)的添加、删除、卸载和重载_objectarx
  • 【博客699】docker daemon预置iptables剖析
  • Golang 中的交叉编译详解
  • Python中的诡异事:不可见字符!
  • 【uniapp】uniapp使用微信开发者工具制作骨架屏:
  • 【UE4 RTS】06-Camera Edge Scroll
  • 无涯教程-Perl - length函数
  • 怎样在 CentOS 里下载 RPM 包及其所有依赖包
  • 在Ubuntu上使用NFS挂载
  • 复现海康威视综合安防管理平台artemis接口Spring boot heapdump内存泄露漏洞
  • 哈希unordered系列介绍(上)
  • MySQL随心记第二篇
  • 0001nginx简介、相关模型与原理
  • elasticsearch简单入门语法
  • Python自动化测试用例:如何优雅的完成Json格式数据断言
  • 阿里云对象存储服务OSS
  • 第三节:在WORD为应用主窗口下关闭EXCEL的操作(1)
  • mybatis 缓存
  • 分布式Redis详解
  • 揭秘程序员和技师的7大共同点,最后一点绷不住了
  • SQL | 使用函数处理数据
  • 基于Dlib库+SVM+Tensorflow+PyQT5智能面相分析-机器学习算法应用(含全部工程源码)+训练及测试数据集
  • 【Flutter】【packages】simple_animations 简单的实现动画
  • python之matplotlib入门初体验:使用Matplotlib进行简单的图形绘制
  • [Linux kernel] [ARM64] boot 流程梳理
  • 重建二叉树