Oracle查询执行计划

执行计划(Execution Plan)也叫查询计划(Query Plan),它是数据库执行SQL语句的具体步骤和过程。SQL查询语句的执行计划主要包括:

● 访问表的方式。数据库通过索引或全表扫描等方式访问表中的数据。
● 多表连接的方式。数据库使用什么连接算法实现表的连接,包括多个表的先后访问顺序。
● 分组聚合以及排序等操作的实现方式。

虽然不同数据库对于SQL查询的执行过程采用了不同的实现方式,但是一个查询语句大致需要经过分析器、优化器以及执行器的处理并返回最终结果,同时还可能利用各种缓存来提高访问性能。

简单来说,一个查询语句从客户端的提交开始,直到服务器返回最终的结果,整个过程大致如图所示。

首先,客户端提交SQL语句。在此之前客户端必须连接到数据库服务器,图中的连接器就是负责建立和管理客户端连接的组件。

然后,分析器(解析器)解析SQL语句的各个组成部分,进行语法分析,并检查SQL语句的语法是否符合规范。

例如,以下语句中的FROM关键字错写成了FORM:

在这种情况下,所有的数据库管理系统都会返回一个语法错误。

然后,优化器会利用数据库收集到的统计信息决定SQL语句的最佳执行方式。例如,是通过索引还是通过全表扫描的方式访问单个表,使用什么顺序连接多个表,如何实现数据的排序等。

优化器是决定查询性能的关键组件,而数据库的统计信息是优化器判断的基础。

最后,执行器根据优化之后的执行计划调用相应的执行模块来获取数据,并将结果返回客户端。

执行计划的查看方式

方法一:语句查看

在Oracle数据库中,我们同样可以使用EXPLAIN PLAN FOR命令生成执行计划,不过需要执行两条命令:

EXPLAIN PLAN FOR

SELECT * FROM  T_USER1 t where t.user_name = 'Admin';

SELECT * FROM  TABLE(dbms_xplan.display);

使用EXPLAIN PLAN FOR命令生成执行计划,并将其存储到系统表PLAN_TABLE中,然后通过一个查询语句显示生成的执行计划。

其中dbms_xplan.display是一个Oracle系统函数。返回的结果显示,该语句在Oracle中是通过'SYS_C0016771'索引范围扫描来查找数据的。

方法二:利用工具查看

在常用的Oracle数据库开发工具PL/SQL中,选择一段SQL脚本,按F5键,即可自动显示该脚本的执行计划信息,跟方法一查询出的结果相同。

在Oracle数据库中,我们可以通过系统表user_indexes和user_ind_columns查询索引以及相关的字段信息。

SELECT * FROM  user_indexes;

SELECT * FROM  user_ind_columns;

到此这篇关于Oracle查询执行计划的文章就介绍到这了,更多相关Oracle查询执行计划内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • ORACLE数据库查看执行计划的方法

    一.什么是执行计划(explain plan) 执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述. 二.如何查看执行计划 1: 在PL/SQL下按F5查看执行计划.第三方工具toad等. 很多人以为PL/SQL的执行计划只能看到基数.优化器.耗费等基本信息,其实这个可以在PL/SQL工具里面设置的.可以看到很多其它信息,如下所示 2: 在SQL*PLUS(PL/SQL的命令窗口和SQL窗口均可)下执行下面步骤 复制代码 代码如下: SQL>EXPLAIN PLAN FOR SEL

  • Oracle中获取执行计划的几种方法分析

    1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下:explain plan for SQL语句然后,在计划表中查询刚刚生成的执行计划,语句如下:select * from table(dbms_xplan.display);注意:Explain plan只生成执行计划,并不会真正

  • Oracle中基于hint的3种执行计划控制方法详细介绍

    hint(提示)无疑是最基本的控制执行计划的方式了:通过在SQL语句中直接嵌入优化器指令,进而使优化器在语句执行时强制的选择hint指定的执行路径,这种使用方式最大的好处便是方便和快捷,定制度也很高,通常在对某些SQL语句执行计划进行微调的时候我会首选这种方式,不过尽管如此,hint在使用中仍然有很多不可忽视的问题: 使用hint过程中有一些值得注意的细则,首先便是要准确的识别对应的查询块,如果需要使用注释也可以hint中声明:对于使用别名的对象一律使用别名来引用,并且诸如"用户名.对象&quo

  • Oracle中使用DBMS_XPLAN处理执行计划详解

    DBMS_XPLAN是Oracle提供的一个用于查看SQL计划,包括执行计划和解释计划的包:在以前查看SQL执行计划的时候,我都是使用set autotrace命令,不过现在看来,DBMS_XPLAN包给出了更加简化的获取和显示计划的方式. 这5个函数分别对应不同的显示计划的方式,DBMS_XPLAN包不仅可以获取解释计划,它还可以用来输出存储在AWR,SQL调试集,缓存的SQL游标,以及SQL基线中的语句计划,实现如上的功能,通常会用到一下5个方法: 1.DISPLAY 2.DISPLAY_A

  • Oracle查询执行计划

    执行计划(Execution Plan)也叫查询计划(Query Plan),它是数据库执行SQL语句的具体步骤和过程.SQL查询语句的执行计划主要包括: ● 访问表的方式.数据库通过索引或全表扫描等方式访问表中的数据.● 多表连接的方式.数据库使用什么连接算法实现表的连接,包括多个表的先后访问顺序.● 分组聚合以及排序等操作的实现方式. 虽然不同数据库对于SQL查询的执行过程采用了不同的实现方式,但是一个查询语句大致需要经过分析器.优化器以及执行器的处理并返回最终结果,同时还可能利用各种缓存来

  • 浅析SQL Server的聚焦使用索引和查询执行计划

    前言 上一篇<浅析SQL Server 聚焦索引对非聚集索引的影响>我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解. 透过索引来看查询执行计划 我们首先来看看第一个例子 1.默认使用索引 USE TSQL2012 GO SELECT orderid FROM Sales.Orders SELECT * FROM Sales.Orders 上述我们看到第2个查询的所需要的开销是第1个查询开销的3倍

  • Oracle固定执行计划之SQL PROFILE概要文件详解

    1.  引子 Oracle系统为了合理分配和使用系统的资源提出了概要文件的概念.所谓概要文件,就是一份描述如何使用系统的资源(主要是CPU资源)的配置文件.将概要文件赋予某个数据库用户,在用户连接并访问数据库服务器时,系统就按照概要文件给他分配资源. 包括: 1.管理数据库系统资源. 利用Profile来分配资源限额,必须把初始化参数resource_limit设置为true默认是TRUE的. 2.管理数据库口令及验证方式. 默认给用户分配的是DEFAULT概要文件,将该文件赋予了每个创建的用户

  • 浅析SQL Server中的执行计划缓存(下)

    在上篇文章给大家介绍了SQL Server中的执行计划缓存(上),本文继续给大家介绍sqlserver执行计划缓存相关知识,小伙伴们一起学习吧. 简介 在上篇文章中我们谈到了查询优化器和执行计划缓存的关系,以及其二者之间的冲突.本篇文章中,我们会主要阐述执行计划缓存常见的问题以及一些解决办法. 将执行缓存考虑在内时的流程 上篇文章中提到了查询优化器解析语句的过程,当将计划缓存考虑在内时,首先需要查看计划缓存中是否已经有语句的缓存,如果没有,才会执行编译过程,如果存在则直接利用编译好的执行计划.因

  • Mysql深入探索之Explain执行计划详析

    前言 如何写出效率高的SQL语句,提到这必然离不开Explain执行计划的分析,至于什么是执行计划,如何写出高效率的SQL,本篇文章将会一一介绍. 执行计划 执行计划是数据库根据 SQL 语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的. 使用explain关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的,分析你的 select 语句或是表结构的性能瓶颈,让我们知道 select 效率低下的原因,从而改进我们的查询.

  • MySQL EXPLAIN执行计划解析

    目录 前言 1 调用EXPLAIN 2 EXPLAIN中的列 2.1 id 2.2 select_type 2.3 table 2.4 type 2.5 possible_keys 2.6 key 2.7 key_len 2.8 ref 2.9 rows 2.10 Extra 前言 调用EXPLAIN可以获取关于查询执行计划的信息,以及如何解释输出.EXPLAIN命令是查看查询优化器如何决定执行查询的主要方法,但该动能也有局限性,它的选择并不总是最优的,展示的也并不一定是真相. 1 调用EXPL

  • Mysql中如何查看执行计划

    目录 explain执行计划包含的信息 各字段详解 id select_type type possible_keys key key_len ref rows Extra 综合Case 执行顺序 使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:id.type.key.rows.Extra 各字段详解 id select查询的序列号,包含一组数字,

  • SQL Server的执行计划

    目录 一.背景 二.显示和保存执行计划 三.显示估计的执行计划 四.显示实际执行计划 五.以 XML 格式保存执行计划 六.比较和分析执行计划 6.1.比较执行计划 6.2.分析实际执行计划 总结 一.背景 为了能够执行查询,SQL Server 数据库引擎必须分析该语句,以确定访问所需数据的最有效方法.此分析由称为查询优化器的组件处理.查询优化器的输入由查询.数据库架构(表和索引定义)和数据库统计信息组成.查询优化器的输出是查询执行计划,有时称为查询计划或执行计划. 查询执行计划是以下内容的定

  • Oracle中直方图对执行计划的影响详解

    前言 大家应该都知道,在Oracle数据库中,CBO会默认目标列的数据在其最小值low_value和最大值high_value之间均匀分布,并按照均匀分布原则,来计算目标列 施加查询条件后的可选择率以及结果集的cardinality. 如果对目标收集了直方图,则意味着CBO不再认为目标列上的数据是均匀分布的.CBO会用该列上的直方图的统计信息计算返回结果集的cardinality. 验证直方图对执行计划的影响步骤: 1.创建一张表T1 2.往表中插入倾斜度很高的数据 3.在B字段上创建索引 4.

随机推荐