广告
返回顶部
首页 > 资讯 > 数据库 >关于Explain
  • 428
分享到

关于Explain

关于Explain 2020-11-09 02:11:31 428人浏览 猪猪侠
摘要

最近在对sql进行性能优化因此对explain相关的知识进行一个简单的整理归纳。 EXPLAIN:   为SELECT语句中使用到的每个表返回一条 SELECT 执行的详细信息;按照Mysql在处理语句时读取它们的顺序列出

关于Explain

最近在对sql进行性能优化因此对explain相关的知识进行一个简单的整理归纳。

EXPLAIN:

  为SELECT语句中使用到的每个表返回一条 SELECT 执行的详细信息;按照Mysql在处理语句时读取它们的顺序列出这些表。

命令输出格式

id = 1    
select_type = SIMPLE    
table = clazz    
partitions =     
type = const    
possible_keys = PRIMARY    
key = PRIMARY    
key_len = 98    
ref = const    
rows = 1    
filtered = 100.00    
Extra =     
  • id:SELECT 标识符,SQL执行的顺序的标识,SQL从大到小的执行
    • id相同时,执行顺序由上至下
    • 如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行
    • 如果id相同,则认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行
  • select_type
    • SIMPLE:简单的SELECT未使用 UNION 查询或子查询
    • PRIMARY:表示此查询是最外层的SELECT(如两表做UNION或者存在子查询的外层的表操作为PRIMARY,内层的操作为UNION)
    • UNION:表示UNION操作中,查询中处于内层的SELECT(内层的SELECT语句与外层的SELECT语句没有依赖关系)
    • DEPENDENT UNION:表示UNION操作中,查询中处于内层的SELECT(内层的SELECT语句与外层的SELECT语句有依赖关系)
    • UNION RESULT:UNION 操作的结果,id值通常为null
    • SUBQUERY:子查询中的第一个 SELECT
    • DEPENDENT SUBQUERY:子查询中的第一个 SELECT, 子查询依赖于外层的查询结果
    • ERIVED:被驱动的SELECT子查询(子查询位于from子句)
    • MATERIALZED:物化子查询(对此查询会创建临时表,将制定表物化为临时表)
    • UNCACHEABLE SUBQUERY:无法缓存子查询的结果,每次都需要计算
    • UNCACHEABLE UNION:UNION操作红内层的子查询无法被物化(类似于UNCACHABLESUBQUERY)
  • table:表示查询涉及的表或衍生表
  • type
    • ALL:全表扫描,mysql将便利全表数据直至找到匹配的行
    • index:全索引扫描,遍历索引树
    • range:  范围扫描,基于索引做扫描,如between,in,>=,like等操作
    • ref: 表示上述的连接匹配条件,即哪些列或产量被用于查找索引列上的值
    • eq_ref: 类似ref区别在于索引是唯一索引,对于每个索引键值表中只有一条记录匹配,即多表连接中使用primary key或者unique key作为关联条件
    • const: 只读取一次就能获得数据(如:主键)
    • system: const的特例,查询的表中只有一行的情况下,使用system
    • null: mysql在优化的过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里面选取最小值可以通过单独索引查找完成  
  • partitions:记录与查询匹配的分区
  • possible_keys:表示在查询时, 能够使用到的索引具体使用了哪些索引, 由 key 字段决定.
  • key:表示查询时所真正使用到的索引.
  • key_len:表示查询优化器使用了索引的字节数. 这个字段可以评估组合索引是否完全被使用, 或只有最左部分字段被使用到
    • 字符串
      • char(n): n 字节长度
      • varchar(n): 如果是 utf8 编码, 则是 3 n + 2字节; 如果是 utf8mb4 编码, 则是 4 n + 2 字节
    • 数值类型  
      • TINYINT: 1字节
      • SMALLINT: 2字节
      • MEDIUMINT: 3字节
      • INT: 4字节
      • BIGINT: 8字节
    • 时间类型 
      • DATE: 3字节
      • TIMESTAMP: 4字节
      • DATETIME: 8字节
    • 字段属性: NULL 属性 占用一个字节. 如果一个字段是 NOT NULL 的, 则没有此属性.
  • ref:被用来标识那些用来进行索引比较的列或者常量
  • rows:估算 SQL 要查找到结果集需要扫描读取的数据行数
  • filterd:给出了一个百分比的值,这个百分比值和 rows 列的值一起使用
  • Extra: 附加与操作相关联的信息
    • Using filesort
      • 表示 MySQL 需额外的排序操作, 不能通过索引顺序达到排序效果,查询 CPU 资源消耗大建议优化去掉,
    • Using index
      • "覆盖索引扫描", 表示查询在索引树中就可查找所需数据, 不用扫描表数据文件, 往往说明性能不错
    • Using where
      • where条件用于筛选出与下一个表匹配的数据然后返回给客户端
    • Using temporary
      • 查询有使用临时表, 一般出现于排序, 分组和多表 join 的情况, 查询效率不高 建议优化.
    • Impossible where
      • WHERE条件过滤没有效果,或者是始终选不出任何列(理解为最终是全表扫描)
    • Impossible HAVING
      • HAVING条件过滤没有效果,或者是始终选不出任何列(理解为返回已有查询的结果集)
    • unique row not found
      • 表中找不到满足条件唯一索引或主键索引的列
    • Using sort_union(...),Using union(...),Using intersect(...)
      • 表示在index_merge的连接类型中索引合并是怎么样完成的,及使用了怎样特别的算法
您可能感兴趣的文档:

--结束END--

本文标题: 关于Explain

本文链接: https://www.lsjlt.com/news/5107.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于Explain
    最近在对sql进行性能优化因此对explain相关的知识进行一个简单的整理归纳。 EXPLAIN:   为SELECT语句中使用到的每个表返回一条 SELECT 执行的详细信息;按照MySQL在处理语句时读取它们的顺序列出...
    99+
    2020-11-09
    关于Explain
  • 关于MySQL中explain工具的使用
    目录输出结果详解:EXPLAIN 是 mysql 提供的一种工具,用于分析查询语句的执行计划,即查询优化器是如何决定执行查询语句的。EXPLAIN可以帮助我们分析查询语句的性能瓶颈,找出问题所在,进而优化查询语句和数据库...
    99+
    2023-05-06
    MySQL工具 MySQL explain
  • Mysql Explain 关键字
    -- 实际SQL,查找用户名为Jefabc的员工 select * from emp where name = "Jefabc"; -- 查看SQL是否使用索引,前面加上explain即可 explain sele...
    99+
    2021-11-06
    Mysql Explain 关键字
  • MySQL如何基于Explain关键字优化索引功能
      explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。   explain关键字的使用方法很简单,就...
    99+
    2022-05-12
    MySQL Explain关键字 索引
  • oracle explain
    EXPLAIN PLAN FOR SELECT * FROM TB_USER; select * from table(dbms_xplan.display); Plan ha...
    99+
    2022-10-18
  • Explain详解
    执行计划中输出各列: table:查询语句中包含的表 id:查询语句中的每个SELECT都对应一个唯一id值,对于连接查询,id是相同的,第一条为驱动表,第二条为被驱动表;对于子查询来说,id可能不同,查询优化器可能将子查询转换为连...
    99+
    2019-11-15
    Explain详解
  • 关于ModuleNotFoundErro
    1.执行代码时报错 错误信息:ModuleNotFoundError: No module named 'urllib3' 错误截图:2.解决办法1 通过如下命令安装urllib3模块: pip install urllib3 运行上面的命...
    99+
    2023-01-31
    ModuleNotFoundErro
  • 关于w3wp.exe
    一. IIS各版本间的区别 IIS 5.0 IIS 5.1 IIS 6.0 平台 Windows 2000 Windows XP Professional Windows Server 2003 家族 体系结构 32 位 32...
    99+
    2023-01-31
    w3wp exe
  • 关于x:inputFileUpload
    inputFileUpload是myfaces里的一个组件,用来上传文件的。本人这几天一直试着使用这个组件,结果均以失败告终。上网搜查资料,结果是千篇一律,更加郁闷。几经尝试,终于发现为什么这组件失效。第一点:在里需加上enctype="m...
    99+
    2023-06-03
  • MySQL-Explain详解
    Explain介绍         在select语句之前增加explain关键字,执行后MySQL就会返回执行计划的信息,而不是执行sql。但如果from中包含子查询,MySQL仍会执行该子查询,并把子查询的结果放入临时表中。 ...
    99+
    2023-08-31
    mysql 数据库
  • MySQL explain介绍
    Explain简介 本文主要讲述如何通过 explain 命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用...
    99+
    2019-05-07
    MySQL explain介绍
  • Mysql Explain详解
    下面是使用 explain 的例子:  在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from 中包含子查询,仍会执行该...
    99+
    2018-07-28
    Mysql Explain详解
  • mongodb Explain and Index
    Explain and Index    explain有三种模式,分别是:queryPlanner、executionStats、allPlansExecution...
    99+
    2022-10-18
  • 关于关于序列自增实际应用
        在一些业务表中原本不需要ID字段作为唯一标识,可是在后期为了方便和需求要在数据表中加ID列作为主键或者外键!那么下面总结了两种方式:  &...
    99+
    2022-10-18
  • 关于 Python3 ThreadPoo
    【背景】    截至 Python 3.6.6,concurrent.futures.ThreadPoolExecutor 中用的都是无·界队列,在生产速度大于消费速度时,可能会耗光系统资源,希望找到一种方式避免这种情况。【方案一】继承 T...
    99+
    2023-01-31
    ThreadPoo
  • 关于python multiproces
    这两天温故了python 的multiprocessing多进程模块,看到的pipe和queue这两种ipc方式,啥事ipc? ipc就是进程间的通信模式,常用的一半是socke,rpc,pipe和消息队列等。 今个就再把pipe和queu...
    99+
    2023-01-31
    python multiproces
  • 关于“NameError: name '
    代码如图在运行python脚本时报出“NameError: name 'raw_input' is not defined”错误查看当前使用的python版本修改代码,python3不再支持raw_input,通过input来替换...
    99+
    2023-01-31
    NameError
  • MySQL之Explain详解
    Explain工具介绍 使用Explain关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈。在select语句之前增加explain关键字,mysql会在查询上设置一个标记,执行查询会返回...
    99+
    2023-04-06
    MySQL Explain详解 Explain详解
  • 怎么使用Explain
    本篇内容主要讲解“怎么使用Explain”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Explain”吧!执行计划 (Execution Plan)什么执行计划Postgres 有一个强...
    99+
    2023-06-03
  • 关于异常System.ArgumentException
    ArgumentException是一个常见的异常类型,表示参数无效或不合法。当方法或构造函数的一个或多个参数的值不在预期范围内时,...
    99+
    2023-09-28
    异常
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作