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详解

在这里插入图片描述

一、table

单表表名,联表查询会有多条数据,一条数据table只有一个值。

二、 id

虽然说多表查询,explain会返回多条数据,但是,只要对应一个select,那么id就相同。即一个select,对应一个一样的id。只有多个select时,id值才有多个

三、select_type

每个select语句在整个sql中扮演的角色是什么。

  • PRIMARY:

主要的,就是最外层的sql查询

  • SIMPLE:

最简单的,没有子查询的sql和没用union的

  • SUBQUERY:

子查询

四、type

我们优化sql时,最少达到range级别,最好达到ref级别。
结果值从好到坏依次是:
system>const>eq_ref>ref>fulltext>range>index>all。
这里解释几个常见的:

  • const:
    根据主键或唯一二级索引列与常数进行等值匹配时,如:select * from table where id=‘xxx’
  • eq_ref:
    在连接查询时(内连接,左连接,右连接),如果被驱动表(被连接表)是通过主键或者唯一二级索引列等值匹配的方式进行访问的(如果唯一二级索引是联合索引的话,所有的索引列都必须进行等值比较),则对该被驱动表访问方法就是eq_ref。
  • ref:
    :通过普通二级索引列与常量进行等值匹配来查询某个表,对该表的访问方式就是ref。注意是等值匹配,=号, in和between等都不行。
  • index_merge:
    索引合并,就是把两个二级索引合并成一个去执行sql了。
  • range:
    使用索引获取范围区间的记录,如between,<,>,in等。
  • index:
    在遍历完所有的二级索引之后,使用了索引覆盖的,就是index。意思就是联合索引中,没有遵循最左原则,where条件用了联合索引中间的值,然后select的列里都是联合索引的列,那么就会全部扫描索引,然后返回结果。因为没遵循最左原则,所以要扫描全部的索引,查找合适的值。如果select的列里,有不是索引的列出现,那么就会是all,而不是index。这个叫索引下推。
    索引下推就是没遵循最左原则,但是涉及到的列,都是联合索引的列,那么,就从这个联合索引中去全部扫描数据,进行数据查询,这样效率肯定比全表扫描高点儿。这种情况,like的%在左边,也会走索引下推。因为这样扫描信息量肯定比扫描全部信息量低。
  • all:
    全表扫描

五、key

sql语句最终使用的索引列

六、ref

当type是ref,ref_eq等值匹配的类型时,ref表明做等值匹配的是一个常量const还是一个函数hunc。不是等值匹配的ref列没值。

七、Extra

额外的信息,包括:

  • Impossible where:

查询语句的where子句永远为false

  • using index:

使用了索引覆盖,就是using index

  • using index condition:

在联合索引中,当根据最左列的索引定位到范围后,如果sql中还有右侧列的查询条件,根据右侧列的条件在联合索引上继续筛选了数据,就显示using index condition

  • using where:

当sql中用了非索引进行过滤的时候,显示using where。也就是过滤数据的时候,没有通过二级索引,来过滤条件,则就是using where。

  • using join buffer:

连接查询时,被驱动表不能利用索引加快访问速度,显示这个。

  • using filesort:

当 order by的字段不是索引时,就需要进行文件排序了。这个过程是很慢的。

  • using temporary:

使用临时表进行sql的处理,一般和using filesort一起出现。一般group by,order by有可能会出现。这个性能也很慢

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:27:20  更:2021-10-28 12:29:45 
 
开发: 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 4:37:11-

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