Explain 执行计划可以看出点啥

Explain是什么

EXPLAIN是用于分析 SQL 查询执行计划的关键字或命令。当在数据库管理系统中执行EXPLAIN加上要分析的查询语句时,它不会实际执行该查询,而是告诉数据库系统解释该查询的执行计划。

执行计划是数据库优化器根据查询的条件、表结构和索引等信息所做的判断,确定查询的最佳执行方式。通过执行EXPLAIN,你可以了解数据库系统在执行查询时选择了怎样的执行路径和策略,有助于评估查询的性能和优化查询。
在这里插入图片描述

explain 输出信息

ID: 操作的序列号或顺序标识符,显示查询执行的顺序。
ID主要用于表示查询执行的顺序,ID较大代表越后执行的步骤。

Select Type:查询的类型,例如简单查询、联接查询、子查询等。

Select Type字段表示查询执行的类型,说明了数据库系统执行查询时所采取的方式。不同的数据库管理系统可能会有不同的Select Type类型,以下是一些常见的类型及其含义:

  1. SIMPLE(简单查询):单表查询或不涉及子查询的简单查询。 PRIMARY(主查询):复杂查询中最外层的查询。
  2. SUBQUERY(子查询):在查询中包含了子查询。
  3. DERIVED(衍生表):在FROM子句中,使用了派生表,通常是嵌套在FROM子句中的子查询结果。
  4. UNION(联合查询):使用了UNION、UNION ALL等联合操作进行多个查询的合并。 DEPENDENT
  5. SUBQUERY(相关子查询):子查询依赖于外部查询中的值。 UNCACHEABLE
  6. SUBQUERY(不可缓存的子查询):子查询无法被缓存,通常是由于查询中使用了不可缓存的函数或变量。 UNION
  7. RESULT(联合结果):UNION操作后的结果。 DEPENDENT UNION(相关联合查询):UNION操作中依赖于外部查询的值
  8. DEPENDENT UNION RESULT(相关联合结果):UNION操作后的结果依赖于外部查询。 DERIVED
  9. UNION(衍生联合查询):在FROM子句中使用了UNION操作。

Table:查询涉及的表名或别名。

Partitions:若查询使用了分区表,显示涉及的分区数量。

Type:表示访问表的方式,可能是全表扫描(ALL)、索引扫描(index)、范围扫描(range)等。

Possible Keys:可能用于此查询的索引列表。

Key:实际用于查询的索引,若为 NULL,则表示没有使用索引。

Key Length:使用的索引长度。

Ref:显示索引的哪一列被使用。

Rows:预估读取的行数。
Rows字段的值越小越好,因为它表示查询执行时需要读取的行数较少,通常与查询性能相关。如果Rows的估算值过大,可能表示查询存在潜在的性能问题,例如可能会导致全表扫描或读取大量数据。

Filtered:过滤条件的选择性,即根据索引选择的行数比例。

Extra:其他额外的信息,可能包括使用了临时表、文件排序、使用了某些优化器的特殊操作等。

一些常见的信息可能包括(不同的数据库系统可能会提供不同的额外信息):

1、Using index:表示查询使用了覆盖索引,即查询中涉及的字段都包含在索引中,无需访问实际数据行。

2、Using temporary/table/filesort:表示查询执行过程中使用了临时表、文件排序等操作。

3、Using where:表示查询执行了WHERE子句中的条件。

4、Using join buffer:表示使用了连接缓冲区进行连接操作。

5、Range checked for each record:对每条记录都进行了范围检查。

6、Full scan on NULL key:在使用覆盖索引时,可能出现对NULL键的全表扫描。

7、Using filesort:表示进行了文件排序操作。

8、Using index condition:表示使用了索引条件推送优化。

9、Impossible WHERE noticed after reading const tables:表示在读取常量表后发现了不可能的WHERE条件。
Oracle执行计划是一条查询语句在Oracle数据库中的执行过程或访问路径的描述。它可以帮助我们了解查询语句的执行效率和优化情况。在PLSQL中,可以通过配置执行计划显示的项来查看Oracle执行计划。具体步骤是:击工具 -> 首选项 -> 窗口类型 -> 计划窗口。\[1\] 执行计划中的一些关键参数包括: - 基数(Rows):Oracle估计的当前步骤的返回结果集行数。 - 字节(Bytes):执行SQL对应步骤返回的字节数。 - 耗费(COST)、CPU耗费:Oracle估计的该步骤的执行耗费和CPU耗费。 - 时间(Time):Oracle估计的执行SQL对于步骤需要的时间。\[2\] 在执行计划中,还有一些关键信息需要解释: - Starts:该SQL执行的次数。 - E-Rows:为执行计划预计的行数。 - A-Rows:实际返回的行数,通过比较E-Rows和A-Rows,可以看出具体哪一步执行计划出问题了。 - A-Time:每一步实际执行的时间,可以看出耗时的SQL。 - Buffers:每一步实际执行的逻辑读或一致性读。\[3\] 通过查看Oracle执行计划,我们可以更好地了解查询语句的执行情况,从而进行性能优化和调整。 #### 引用[.reference_title] - *1* [Oracle:执行计划Explain Plan)](https://blog.csdn.net/milianmishi/article/details/130956811)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Oracle调优之看懂Oracle执行计划](https://blog.csdn.net/ChengDeRong123/article/details/122958466)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值