mysql中explain用法和结果的含义

2023-11-15

[sql]  view plain  copy
  1. explain  select * from user  

 

[sql]  view plain  copy
  1. explain extended select * from user  


id SELECT识别符。这是SELECT的查询序列号
select_type

SELECT类型,可以为以下任何一种:

  • SIMPLE:简单SELECT(不使用UNION或子查询)
  • PRIMARY:最外面的SELECT
  • UNION:UNION中的第二个或后面的SELECT语句
  • DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询
  • UNION RESULT:UNION 的结果
  • SUBQUERY:子查询中的第一个SELECT
  • DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询
  • DERIVED:导出表的SELECT(FROM子句的子查询)
table

输出的行所引用的表

type

联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序:

  • system:表仅有一行(=系统表)。这是const联接类型的一个特例。
  • const:表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!
  • eq_ref:对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。
  • ref:对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。
  • ref_or_null:该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL值的行。
  • index_merge:该联接类型表示使用了索引合并优化方法。
  • unique_subquery:该类型替换了下面形式的IN子查询的ref: value IN (SELECT primary_key FROM single_table WHERE some_expr) unique_subquery是一个索引查找函数,可以完全替换子查询,效率更高。
  • index_subquery:该联接类型类似于unique_subquery。可以替换IN子查询,但只适合下列形式的子查询中的非唯一索引: value IN (SELECT key_column FROM single_table WHERE some_expr)
  • range:只检索给定范围的行,使用一个索引来选择行。
  • index:该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。
  • ALL:对于每个来自于先前的表的行组合,进行完整的表扫描。
possible_keys

指出MySQL能使用哪个索引在该表中找到行

key 显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。
key_len 显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。
ref 显示使用哪个列或常数与key一起从表中选择行。
rows 显示MySQL认为它执行查询时必须检查的行数。多行之间的数据相乘可以估算要处理的行数。
filtered 显示了通过条件过滤出的行数的百分比估计值。
Extra

该列包含MySQL解决查询的详细信息

  • Distinct:MySQL发现第1个匹配行后,停止为当前的行组合搜索更多的行。
  • Not exists:MySQL能够对查询进行LEFT JOIN优化,发现1个匹配LEFT JOIN标准的行后,不再为前面的的行组合在该表内检查更多的行。
  • range checked for each record (index map: #):MySQL没有发现好的可以使用的索引,但发现如果来自前面的表的列值已知,可能部分索引可以使用。
  • Using filesort:MySQL需要额外的一次传递,以找出如何按排序顺序检索行。
  • Using index:从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。
  • Using temporary:为了解决查询,MySQL需要创建一个临时表来容纳结果。
  • Using where:WHERE 子句用于限制哪一个行匹配下一个表或发送到客户。
  • Using sort_union(...), Using union(...), Using intersect(...):这些函数说明如何为index_merge联接类型合并索引扫描。
  • Using index for group-by:类似于访问表的Using index方式,Using index for group-by表示MySQL发现了一个索引,可以用来查 询GROUP BY或DISTINCT查询的所有列,而不要额外搜索硬盘访问实际的表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql中explain用法和结果的含义 的相关文章

  • SQL查询:按字符长度排序?

    是否可以按字符总数对sql数据行进行排序 e g SELECT FROM database ORDER BY data length 我想你想用这个 http dev mysql com doc refman 5 0 en string f
  • 将mysql表限制为一定大小并自动删除最旧的条目[重复]

    这个问题在这里已经有答案了 可能的重复 如何设置MySQL表的最大行数 https stackoverflow com questions 8048001 how can i set a maximum number of rows in
  • 创建用于存储高尔夫球成绩的可扩展数据库架构

    我正在尝试设计一个数据库来存储我所有的朋友和我的高尔夫球成绩 您可能知道 高尔夫得分由 18 洞的个人得分组成 我可以想到两种设计模式的方法 创建一个表 每个洞有一列 例如 h1 到 h18 该表具有引用其他表的 FK player id
  • 使用外部硬盘写入和存储 mysql 数据库

    我已经设置了 mysql 数据库在我的 Mac 上使用 java 和 eclipse 运行 它运行得很好 但现在我将生成大约 43 亿行数据 这将占用大约 64GB 的数据 我存储了大量的密钥和加密值 我有一个 1TB 外部我想用作存储位置
  • html 下钻下拉所选值未插入 MYSQL

    我有两个下拉列表 首先从数据库下拉填充 根据第一个下拉列表的选定值从数据库填充第二个下拉列表 document ready function c change function var c1 c selected text if c1 aj
  • Java:使用PreparedStatement将多行插入MySQL

    我想使用 Java 一次将多行插入 MySQL 表中 行数是动态的 过去我在做 for String element array myStatement setString 1 element 0 myStatement setString
  • 比较 PHP 中的 unix 时间戳 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 在 PHP 中我有 diff abs
  • 澄清创建临时表的连接顺序

    我在 mysql 中有一个大型查询 涉及将多个表连接在一起 它太慢了 所以我做了 解释 发现它正在创建一个临时表 我怀疑它占用了大部分执行时间 我找到了一些相关资料 mysql 文档 http dev mysql com doc refma
  • InnoDB 或 MyISAM - 为什么不两者都使用呢?

    我读过各种关于两者之间哪个更好的主题InnoDB and MyISAM 看来争论的都是使用还是其他 根据表的不同 是否不能同时使用两者 这样做会有什么缺点 据我所知 发动机可以在CREATE TABLE命令 因此 某些经常读取的表可以设置为
  • MySQL按总和连接表问题

    我在连接表时遇到问题 以下是示例表 表A 30行 ID Name Description 1 Type Unicode Art 2 Header Spreadsheet 3 Auto Align Off 表B 100行 ID Name De
  • SQL DML:日期值不正确 (MySQL)

    我在数据库中创建了一个表 CREATE TABLE official receipt student no INT UNSIGNED academic year CHAR 8 trimester ENUM 1 2 3 or no MEDIU
  • 使用单个查询和每用户密码盐进行用户登录

    我决定使用存储在数据库中的每用户盐来实现用户登录 盐作为密码的前缀 该密码使用 SHA 进行哈希处理并存储在数据库中 过去 当我不使用盐时 我会使用典型的方法 使用用户输入的用户名和密码来计算查询返回的行数 然而 对于每个用户的盐 您需要先
  • 在 while 循环内查询可以吗?

    我在一个数据库中有两个表 我正在查询第一个表限制 10 然后循环结果 在 while 循环内 我使用第一个查询中的数据作为参数再次执行另一个查询 以下是该脚本的示例
  • MySQL-分割字符串

    我的问题与这篇文章类似 MySQL 中的 反向 GROUP CONCAT https stackoverflow com questions 17308669 reverse group concat in mysql 然而 而不是反转gr
  • SQL:将现有列设置为 MySQL 中的主键

    我有一个包含 3 列的数据库 id name somethingelse 该表没有设置索引 我收到 未定义索引 在 phpmyadmin 中id 是一个 7 位字母数字值 每行都是唯一的 我想将 Drugid 设置为主键 索引 我不知道有没
  • 我可以让 MySQL 数据库在插入语句后自动为列分配值吗?

    给定一个具有 ID pk 和 name 列的员工表 ID name 1 John 2 James 3 Tom Can I do INSERT INTO employee name VALUES Jack 并以某种方式让数据库自动分配下一个可
  • 删除重复的 SQL 记录以允许唯一键

    我在 MYSQL 数据库中有一个表 销售 该表理应强制执行唯一约束以防止重复 事实证明 首先删除欺骗并设置约束有点棘手 表结构 简化 id 唯一 autoinc 产品编号 目标是强制product id 的唯一性 我想要应用的重复数据删除策
  • MySQL:更新所有行将字段设置为0,但将一行的字段设置为1

    是否有一种有效的方法将行字段的选择更新为 0 但根据 ID 将其中一行设置为 1 基本上 我在数据库中有多个对象 我想在其中一个 inuse 之间切换 因此查询将其中一行 按 id 设置为 inuse 1 将其他行设置为 inuse 0 谢
  • MySQL ALTER TABLE 挂起

    我知道这个问题已经被问过好几次了 但我的问题发生在我刚刚创建的表上 它只有 10 列和 1 行 因此 与通常的挂起问题不同 这不是具有大量数据的大表的情况 但它仍然挂着 这是我正在运行的 SQL ALTER TABLE db Search
  • 使用mysql数据按高低价格排序

    这是我所拥有的以及我想做的 我的 MySql 数据库中有 12 个项目 4 个产品为 4 99 4 个产品为 3 99 4 个产品为 2 99 我意识到我可以像这样查询数据库 它会给我一个该价格的产品列表

随机推荐

  • linux新建文件夹_Linux下配置NAS的一些总结经验

    前言 经历了上一次的Windows Server的痛苦配置以后 我决定换成Linux来配置NAS 相对于Windows平台 Linux平台会更加自由和简洁 而且清晰的权限和后台也要比Win更加干净 唯一的弊端就是要去学不少命令 但是我这里会
  • http通过get方法调用接口代码部分

    请求参数的java类 import java sql Timestamp public class ReqData private String appKey private String sign private String versi
  • CBAM: Convolutional Block Attention Module—— channel attention + spatial attention

    影响卷积神经网络的几大因素 Depth VGG ResNet Width GoogLeNet Cardinality Xception ResNeXt Attention channel attention spatial attentio
  • Python matplotlib绘制散点图

    Python matplotlib绘制散点图 上篇文章介绍了使用matplotlib绘制折线图 参考 https blog csdn net weixin 43790276 article details 109191533 本篇文章继续介
  • CSR867x — 开机是进入可发现可连接还是RSSI配对

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 XX 版权声明 原创文章 欢迎评论和转载 转载时能告诉我一声就最好了 XX 要说的话 作者水平
  • Linux特殊文件权限—SUID, GUID and Sticky Bit(s权限,t权限)

    Linux特殊文件权限 权限设置 常用权限 其他权限 s权限 t权限 SUID位 GUID位 Sticky bit 权限设置 常用权限 linux系统内有三种身份 u拥有者 g群组 o其他人 有三种常用权限 r读权限 w写权限 x执行权限
  • 一步一步学Cmake 之 必学的二十个指令(1-10)

    内容 1 add libray 2 option 3 execute process 4 target sources 5 add custom command 6 add custom target 7 function macro 8
  • C++中set用法详解

    1 关于set C STL 之所以得到广泛的赞誉 也被很多人使用 不只是提供了像vector string list等方便的容器 更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作 vector封装数组 list封装了链表
  • 16 个有用的带宽监控工具来分析 Linux 中的网络使用情况

    概述 为什么今天的网络这么慢 您是否在监控 Linux 网络带宽使用情况时遇到问题 如果你想可视化网络中正在发生的事情 以便了解和解决导致网络缓慢的任何原因 今天的工具可以帮助到你 下面列出的工具都是开源的 包括用于监视单个 Linux 机
  • [数据库系统]数据建模:工程化方法 之 IDEF1x规范

    IDEF1x规范 1 实体 2 联系 1 实体 实体 Entity 一个 实体 表示一个现实和抽象事物的集合 这些事物必须具有相同的属性和特征 这个集合的一个元素就是该实体的一个实例 实体被区分为独立实体和从属实体 独立实体 一个实体的实例
  • 如何让你的开源项目更有展现力?

    播种希望 今天讲的内容不是纯纯的技术干货 而是笔者在做开源项目中用到的一些工具 可以让我们的开源项目更加富有展现力 最后会同步一下H5 Dooring 页面编辑器和V6 Dooring可视化大屏编辑器的一些更新 如何让你的开源项目有个漂亮的
  • 【硬创邦】跟hoowa学做智能路由(七):路由联网

    2014 05 16 17 32 原创 孙冰 1条评论 这一章hoowa将向各位介绍Openwrt下基本路由功能的配置方法 通过本章学习大家将了解如何设置OpenWRT来使路由连接网络 讲解将通过命令行模式 在系列教程中 hoowa不会教大
  • 解决Macbook安装Adobe Illustrator cc2021中文激活版打不开问题,ai支持苹果big sur系统安装教程

    备受期待的Adobe Illustrator 2021 for Mac终于来啦 这是全球最著名的矢量图形软件 这次的Illustrator2021版提升了软件的性能 缩短了Illustrator 2021的启动时间并加快了文件打开速度 而且
  • windows下安装spark及hadoop

    windows下安装spark 1 安装jdk 2 安装scala 3 下载spark spark下载地址 3 1安装spark 将下载的文件解压到一个目录 注意目录不能有空格 比如说不能解压到C Program Files 作者解压到了这
  • 组合数学(持续更新)

    文章目录 排列与组合 四个基本计数原理 集合的排列 集合的组合 多重集合的排列 多重集合的组合 鸽巢原理 排列与组合 四个基本计数原理 1 1 1 加法原理 设集合
  • Glog :安装与卸载

    Glog的安装与卸载分为两种情况 一种是使用apt 一种是使用源代码 apt安装与卸载 安装 sudo apt get install libgoogle glog dev 卸载 sudo apt get remove libgoogle
  • 【JSON】谷歌浏览器JSON可视化插件:JSON-Handle

    摘要 JSON handle是一款对JSON格式的内容进行浏览和编辑 以树形图样式展现JSON文档 并可实时编辑 今天我推荐一款chrome Firfox下处理json的插件JSON handle 这个应该是我用过最好最方便的了 插件功能
  • 2023 年最常见的人工智能面试问题

    人工智能面试问题 自从我们意识到人工智能如何对市场产生积极影响以来 几乎每个大型企业都在寻找人工智能专业人士来帮助他们实现愿景 在这个人工智能面试问题博客中 我收集了面试官最常问的问题 人工智能 AI 面试问答 人工智能面试准备 此 Edu
  • 基于hostpath的k8s pod日志持久化

    基于hostpath的k8s pod日志持久化 前置条件 step1 修改服务的yaml文件 step2 推送日志到minio版保存 step3 优化 附加 简单了解 前置条件 考虑到pod的多副本 但同时需要将日志集中收集起来 所以采用h
  • mysql中explain用法和结果的含义

    sql view plain copy explain select from user sql view plain copy explain extended select from user id SELECT识别符 这是SELECT