如何查看sql的执行计划

article/2025/9/29 3:40:02

文章目录

    • 如何使用plsql查看sql的执行计划?
    • 使用navicat
    • 返回内容解释
      • id
      • select_type
      • table
      • type
      • possible_keys
      • key
      • key_len
      • ref
      • rows
      • extra

如何使用plsql查看sql的执行计划?

explain plan for (select * from table)

可查看该语句的sql执行计划

返回的结果:

table access by index rowId 索引返回多少行数据,回表就要回多少次,每次回表都是单独(因为RowID对应一个数据块)

merge join cartesian 表 之间的自然连接等,进行笛卡尔积计算,非常影响效率,尽量多的减少数据条数。

buffer sort 临时表的创建方式

使用navicat

除此之外,也可以使用navicat的可视化界面直接点击:解释(保密原因数据打了马赛克)

请添加图片描述

返回内容解释

id

表示表的读取顺序,分为两种情况:

  • id相同,读表顺序从上往下
  • id不同,优先读取id大的

这玩意儿多表查询的时候,可以用来看读表的顺序,不过一般生产开发中不会多表查询,大伙看个乐就行。

select_type

查询类型,有如下类型:

simple 简单语句,不包含子查询或者union
primary 若语句包含复杂查询,则语句的最外层为primary
subquery 在select或者where中包含子查询
derived 在from中包含的子查询为derived(衍生表)
union 在union之后的查询,被标记为union类型
union result 从union获取结果的select查询

一般都是simple,因为生产环境的sql不会写那么复杂,这也是为了高并发下的性能考虑。

可以看到我上面的图片中,select_type就是SIMPLE

table

不多bb了吧

type

索引类型, 有很多种,常见的类型按照性能从差到好为:

all < index < range < ref < eq_ref < const < system

all 表示全表扫描,性能最差
index 走索引,扫描了索引文件的全部数据
range 走索引,索引列使用了范围查找,如between, in, <, >
ref 表示非唯一性索引
eq_ref 表示唯一索引
const 一次就找到数据的唯一索引
system 只有一条数据的系统表

在上面的实际场景中,可以看到索引类型type是const,说明索引的结构还是很合理的!

possible_keys

mysql分析可能使用到的索引

可以看到是PRIMARY

也就是它分析应该是走了主键索引

key

实际使用的索引,当key有值时才表示真的用到了索引

可以看到是PRIMARY

也就是实际上查询确实是走了主键索引

key_len

使用到的索引长度,根据索引组合字段类型所占的字节数来计算。

我们的主键应该是varchar(字符串类型),占8个字节长度

ref

哪些列或常量被用于查找索引列上的值,即索引列=ref值。

一般情况下有常量和表的列名两种情况

此处可以看到是常量const

rows

mysql估算的找到满足条件的记录所需要读取的行数,越少越好。

可以看到这次是只需要读取一行,非常牛逼了

extra

mysql将执行计划的其他信息放到extra中。常见的有:

Using filesort 排序没有用到索引(重要,能使用索引排序是更好的)
Using temporary 使用了临时表保存中间结果,mysql在对查询结果排序时使用临时表,常见于order by 和group by(重要,使用临时表降低性能,最好排除掉)
Using index 表明select查询使用了覆盖索引(即只查索引文件就找到了需要的数据,不再需要访问表)
Using where 表示使用了where查询条件
Using join buffer 表示表join关联使用到了缓存
impossible where 表示where条件永远是false,拿不到数据
using index condition 使用了索引条件

这里是NULL


http://chatgpt.dhexx.cn/article/u9qcBZgl.shtml

相关文章

Mysql查看执行计划

使用explain关键字可以模拟优化器执行SQL查询语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的&#xff0c;分析你的查询语句或是表结构的性能瓶颈。 explain执行计划包含的信息 其中最重要的字段为&#xff1a;id、type、key、rows、Extra 各字段详解 id select查询…

Oracle查看执行计划

查看执行计划&#xff0c;分析慢查询SQL 在MySql中可以使用EXPLAIN关键字来查看执行计划并分析sql的执行情况&#xff0c;而在Oracle数据库中则需要两条sql来查看执行计划 EXPLAIN PLAN FOR SELECT * FROM user where username zhangsan; SELECT * FROM TABLE(dbms_xplan.d…

一文搞定 SQL Server 执行计划

导读 数据开发过程中&#xff0c;开发完成的 SQL 发布到生产环境&#xff0c;经常会发生 SQL 执行慢甚至根本无法执行&#xff0c;如何避免这种情况呢&#xff1f;这一篇我们分析一下 SQL Server 的执行计划是如何生成及如何阅读评估执行计划。 基本概念 在此之前&#xff0c…

spark学习之执行计划explain

&#x1f43c;今天我们来学习阅读spark的执行计划&#xff0c;在学习执行计划之前&#xff0c;我们需要了解spark中的代码是如何执行的&#xff0c;学习代码的执行过程有助于我们加深对spark的理解&#xff0c;对往期内容感兴趣的同学可以查看&#x1f447;: hadoop专题: hado…

详解mysql执行计划

在数据库查询的时候&#xff0c;我们通常会使用sql语句去查询自己所需要的数据。但是&#xff0c;关于sql在数据库中是如何执行的&#xff0c;它有没有使用索引&#xff0c;具体使用了哪些索引&#xff0c;查找了哪些字段和表&#xff0c;他们的顺序是怎样的&#xff0c;分别用…

Spark执行计划分析与研究

在学习、使用和研究spark的过程中&#xff0c;逐渐会发现&#xff1a;单纯看官方文档对spark参数调优只能解决一小部分的问题&#xff0c;要想进一步的学习spark&#xff0c;进一步调优甚至在spark源码的基础上二次开发&#xff0c;我觉得收益最高的应该是学习执行计划了。 因…

impala 执行计划详解

Impala是一个MPPMassivelyParallelProcessing计算引擎&#xff0c;简单来说就是将计算压力分到多个节点&#xff0c;得到结果后汇总&#xff0c;然后再返回给客户端。如果你留意过Impala的执行计划&#xff0c;会观察到exchange节点&#xff0c;该节点的作用就是分散计算压力的…

sqlserver 执行计划

一个很好的手册分享&#xff0c;执行计划里的属性解释官方文档&#xff1a;https://docs.microsoft.com/zh-cn/sql/relational-databases/showplan-logical-and-physical-operators-reference?viewsql-server-2017 想复杂的事情简单说&#xff0c;在看执行计划的其他文章的时…

MySQL执行计划

什么是执行计划 The set of operations T that the optimizer o chooses to perform the most efficient query t is called the “query execution plan”, also known as theEXPLAIN plan 如何获取SQL语句的执行计划 方法1&#xff1a; explain SQL 。方法2&#xff1a; …

sql 执行计划

一、各数据库执行计划执行方式 二、explan 三种格式 (以MySQL为例) 1.默认格式 2.tree 格式(与postgreSQL执行计划格式相似) 3.json格式 三、执行计划各字段名含义 1) id:查询编号 ,从小到大,编号越大执行顺序越往前 相同的话从上往下执行(也可以把编号当成缩进的格数…

mysql的执行计划_MySQL——执行计划

项目开发中,性能是我们比较关注的问题,特别是数据库的性能;作为一个开发,经常和SQL语句打交道,想要写出合格的SQL语句,我们需要了解SQL语句在数据库中是如何扫描表、如何使用索引的; MySQL提供explain/desc命令输出执行计划,我们通过执行计划优化SQL语句。 下面我们以M…

Oracle查询执行计划

执行计划&#xff08;Execution Plan&#xff09;也叫查询计划&#xff08;Query Plan&#xff09;&#xff0c;它是数据库执行SQL语句的具体步骤和过程。SQL查询语句的执行计划主要包括&#xff1a; ● 访问表的方式。数据库通过索引或全表扫描等方式访问表中的数据。 ● 多表…

oracle执行计划耗费 基数 字节,Oracle 查看执行计划

一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述 二:怎样查看Oracle执行计划? 这里以PLSQL为例: ①:配置执行计划需要显示的项: 工具 —> 首选项 —> 窗口类型 —> 计划窗口 —> 根据需要配置要显示在执行计…

执行计划绑定方法

执行计划突变属于每个数据库系统不可避免页难以预防的难题&#xff0c;处理执行计划突变带来的性能问题也是每个DBA应该具备的技能。除了开发时针对不同范围的结果集使用不同的sql&#xff0c;DBA可以通过查看索引状态、消除索引碎片、表重新分析&#xff0c;还可以使用执行计划…

PostgreSQL执行计划

简介 PostgreSQL是“世界上最先进的开源关系型数据库”。因为出现较晚&#xff0c;所以客户人群基数较MySQL少&#xff0c;但是发展势头很猛&#xff0c;最大优势是完全开源。 MySQL是“世界上最流行的开源关系型数据库”。当前客户基数大&#xff0c;随着被Oracle收购&#…

一文带你了解SQL的执行计划(explain)

一. 什么是SQL执行计划 为什么关注sql的执行计划&#xff0c;因为一个sql的执行计划可以告诉我们很多关于如何优化sql的信息 。 通过一个sql计划&#xff0c;如何访问中的数据 &#xff08;是使用全表扫描还是索引查找&#xff1f;&#xff09; 一个表中可能存在多个表中不同的…

执行计划

一、什么是执行计划&#xff08;explain plan&#xff09; 执行计划&#xff1a;一条查询语句在ORACLE中的执行过程或访问路径的描述。 二、如何查看执行计划 1: 在PL/SQL下按F5查看执行计划。第三方工具toad等。 很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信…

matlab画图基本命令

一、本文主要内容和相关参考博客 参考了xticklabel和xtick在matlab里的区别 和 label ‘ytick’的设置这两个网址。matlab在画图时会自动调整坐标轴间隔的大小&#xff0c;但是我们可以使用如set(gca,ytick,ylabel_pos,yticklabel,ylabel_str)的函数来实现自己调整间隔以画出…

MATLAB常用绘图命令

选择图型窗口命令 坐标轴相关命令 文字标示命令 栅格 离散数据处理

MATLAB画图命令zz

一、散点图 1&#xff0e;1&#xff0e;命令 plot 功能 线性二维图。在线条多于一条时&#xff0c;若用户没有指定使用颜色&#xff0c;则plot循环使用由当前坐标轴颜色顺序属性&#xff08;current axes ColorOrder property&#xff09;定义的颜色&#xff0c;以区别不同的…