IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL explain 命令 -> 正文阅读

[大数据]MySQL explain 命令

概述

MySQLexplain 命令,主要用于查看实际查询过程中的一些执行细节(执行计划),也是查看优化器决定如何执行查询的主要方法

explain 使用示例

explain 的使用也很简单,在 select 语句之前增加 explain 关键字再执行整个语句即可。explain 的使用示例如下所示:

-- 在 select 语句前增加 explain 关键字即可
explain select id, name, age, register_date from user where name = '小美' and age = 22 and register_date = '2015-03-05'

最终返回的数据如下所示:
在这里插入图片描述

注意,如果在查询语句的 from 子句中不包含子查询的情况下,使用 explain 命令并不会真正地执行查询;但是如果包含了,那么 explain 仍然会执行子查询,并将子查询的查询结果放在临时表中。

explain 返回字段介绍

使用 explain 命令之后,将会返回优化器给这条查询语句制定的执行计划相关信息,这些信息里面主要包含以下的一些字段:

  • id:查询子句的执行顺序,值越大越先执行,相等的情况下,排在前面的先执行
  • select_type:查询类型,一共有三个取值
    • PRIMARY:代表的是复杂查询中最外层的 select 语句
    • DERIVED:代表的是 from 后面的子查询叫衍生表(或者派生表)
    • SUBQUERY:代表的是 select 中的子查询
  • table:表示数据从哪张表(或者哪个查询子句)查询出来
  • partitions:表示数据从哪个分区表中查询出来的(小知识:一张表底层是由一个或多个分区表组成的,不同的数据可能会放到不同的分区表上)
  • type:表示关联类型或访问类型,即 MySQL 决定如何查找表中的行,以及查找数据行记录的大概范围。性能从最优到最差分别为:
    • null:为空时,表示 MySQL 能在优化阶段分解查询语句,在执行阶段用不着再访问表或索引。例如:从表中查询最小的主键值
    • system:当查询的表中只有一条数据时
    • const:用于主键或唯一索引键的列与常数进行比较时
    • eq_ref:使用了主键或唯一索引的全部部分,被连接使用时,最多只会返回一条符合条件的记录。
    • range:通常出现在范围查找中,使用索引来检索给定范围的行
    • index:从二级索引的第一个叶子节点开始扫描,一直到最后一个叶子节点
    • ALL:从主键索引的第一个叶子节点开始扫描,一直到最后一个叶子节点
    • 一般来说,查询最好能达到 ref 级别,最低要达到 range 级别
  • posiible_keys:查询过程中可能会被使用到的索引
  • key:实际使用的索引。有可能 posiible_keys 不为空,但是 key 为空,因为 MySQL 最终会根据实际情况来判断是否使用索引,如果使用索引的代价比不使用索引的代价还大,那么 MySQL 将不会使用索引
  • key_len:显示了 MySQL 使用的索引字段长度,由这个值可以确定使用索引的部分
  • ref:查询字段的比较值,const (常量)或者具体的列的名称
  • rowsMySQL 预估的要扫描的行数
  • extra:一些额外信息
    • Using index:在符合使用覆盖索引的场景情况下
    • Using where:使用了 where 语句,且要比较的列上没有索引
    • Using index condition:查询的列没有完全被索引覆盖
    • Using temporary:查询过程中使用了临时表
    • Using filesort:使用外部排序,而非索引排序。如果数据较小时将在内存排序否则需要在磁盘完成排序
    • Select tables optimized away:使用某些聚合函数(比如:maxmin)来访问存在索引的某个字段时,结果直接可以用索引上获得
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:21:59  更:2021-12-15 18:22:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:57:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码