`

PL/SQL DEVELOPER执行计划的查看 (转)

 
阅读更多


|
字号
 订阅

 
 
            这里,我学到的一个很重要的东西,就是用PL/SQL DEVELOPER去看一条SELECT语句的执行计划,执行计划里面可以看到这条SELECT语句的开销、I/O操作开销等数值,可以很清晰地看到语句各个部分的执行效率。选中这条SELECT语句以后,按F5就可以。

         以下面的SELECT语句为例子: 

PL/SQL DEVELOPER执行计划的查看 - 花刺 - 我的点点滴滴

   从三张表中取数据,按我以前的想法,只要WHERE语句那里有能让三张表连接起来的条件就可以。所以我只使用了:

 

PL/SQL DEVELOPER执行计划的查看 - 花刺 - 我的点点滴滴

 按F5后,可以看到这样做的执行计划如下:

PL/SQL DEVELOPER执行计划的查看 - 花刺 - 我的点点滴滴
开销974,其实并不算高。但是加上测试环境的数据库连接速度确实很慢,导致了经常会出现数据库连接超时的提示。

         修改后的SELECT语句如下:

PL/SQL DEVELOPER执行计划的查看 - 花刺 - 我的点点滴滴
      可以看到,修改只是在WHERE里面多加了两个关联条件。此时再按F5看执行计划:
 
PL/SQL DEVELOPER执行计划的查看 - 花刺 - 我的点点滴滴
  这时候COST只剩下95了。实际操作中,确实也明显感到了操作速度的提升。

         执行计划的执行顺序是,从内层至外层,从上往下。比如上面修改后的实行计划中,数据库先对ORDER_HEADER的主键做了一个索引范围检索,然后再对XXWMS_DLX_SERIAL_NUMBER的非唯一性索引XXWMS_DLX_SERIAL_NUMBER_N4做索引范围检索。

         在做修改之前,SERIAL_NUMBER表和XXWMS_DLX_SERIAL_NUMBER表使用了循环嵌套(NESTED LOOPS)的连接方法,得到结果后再与ORDER_HEADER进行哈希连接。由于两个表的数据量都比较大(SERIAL_NUMBER在测试环境中数据量达到一千四百万条左右),循环嵌套连接的步骤显然开销了很多。

         可以猜想,如果循环嵌套连接中其中一个表的数据量小一点,就可以减少很多开销。于是,在连接条件中多加一条xx.client_id = oh.client_id。这样就使用了ORDER_HEADER的主键去和XXWMS_DLX_SERIAL_NUMBERN4索引进行连接,得到结果以后再去和SERIAL_NUMBER连接。结果在上图可以看到,COST只有95,大大加快了执行的效率。

         这个经历让我觉得PL/SQL的优化相当神奇,效果是一样的,但只是加一个条件就可以使得执行效率有如此大的提高。就这个改变,使得弹出来的超时提醒的几率大大降低,对于用户来说这个改变是很重要的。

 其它查看方法:
    
需要先创建plan_table
create table PLAN_TABLE (
        statement_id         varchar2(30),
        timestamp            date,
        remarks              varchar2(80),
        operation            varchar2(30),
        options               varchar2(255),
        object_node          varchar2(128),
        object_owner         varchar2(30),
        object_name          varchar2(30),
        object_instance numeric,
        object_type     varchar2(30),
        optimizer       varchar2(255),
        search_columns  number,
        id                numeric,
        parent_id        numeric,
        position        numeric,
        cost                numeric,
        cardinality        numeric,
        bytes                numeric,
        other_tag       varchar2(255),
        partition_start varchar2(255),
        partition_stop  varchar2(255),
        partition_id    numeric,
        other                long,
        distribution    varchar2(30),
        cpu_cost        numeric,
        io_cost                numeric,
        temp_space        numeric);

建表的sql在rdbms/admin下有,名字是utlxplan.sql
我用的是9i,其他版本的名字可能不一样,
然后执行
explain plan for sql语句
然后可以执行这个sql看结果
SELECT LPAD (' ', 2 * LEVEL) ||
       operation ||
       ' ' ||
       options ||
       ' ' ||
       object_name query_plan
  FROM plan_table
CONNECT BY PRIOR id = parent_id
START WITH id = 1
ORDER BY id;
分享到:
评论

相关推荐

    PL/SQL Developer 远程连接Oracle数据库

    8. **性能监控**:尽管是远程连接,PL/SQL Developer仍然可以显示执行计划、统计信息和性能指标,帮助分析和优化SQL查询。 9. **版本控制集成**:PL/SQL Developer可以与各种版本控制系统(如Git、SVN)集成,这...

    pl/sql developer11.0

    4. **数据操作**:PL/SQL Developer允许直接在界面中查看、插入、更新和删除数据库中的数据,同时支持生成SQL脚本进行批量操作。 5. **数据库连接**:软件支持多种方式连接到Oracle数据库,包括TNS连接、Easy ...

    PL/SQL Developer trial version问题

    PL/SQL Developer是一款由Allround Automations公司开发的Oracle数据库集成开发环境,专门用于编写、调试和管理PL/SQL代码。在你所遇到的问题中,"trial version"指的是试用版,这意味着你正在使用的PL/SQL ...

    PL/SQL Developer 10.0.5版本带sn亲测好用推荐

    - **SQL*Plus**:Oracle提供的命令行工具,可以执行SQL语句和PL/SQL块,但功能相对有限,而PL/SQL Developer提供了更丰富的图形化界面。 3. 版本10.0.5的改进与更新: - 虽未提供具体细节,但通常新版本会修复前...

    PL/SQL Developer 13.0.6中文版32位64位+注册码

    调试器,允许用户逐步执行PL/SQL程序,查看变量值,设置断点;以及对象浏览器,帮助用户直观地管理和操作数据库对象。 在压缩包中,有以下几个文件: 1. `sn.txt` - 这很可能是包含注册码或激活信息的文本文件,...

    PL/SQL Developer Evaluation Version 14.0.0.1961官方多语言版本(32位)

    PL/SQL Developer是一款专为Oracle数据库开发者设计的强大集成开发环境(IDE),由Allround Automations公司开发。这个“Evaluation Version 14.0.0.1961”是其官方发布的多语言版本,特别强调支持32位操作系统。这...

    PL/SQL Developer 中文版帮助手册(PDF)

    根据提供的信息来看,这份文档似乎是一份关于PL/SQL Developer的中文版帮助手册。由于实际内容部分呈现为乱码,无法直接解读具体内容,因此这里将根据标题、描述以及标签来进行有关PL/SQL Developer的一些基本知识点...

    pl/sql developer使用教程

    PL/SQL Developer还支持复杂的SQL脚本执行,包括DML(数据操纵语言)和DDL(数据定义语言)操作。 七、版本控制集成 PL/SQL Developer支持与常见的版本控制系统如SVN、Git等集成。这使得团队协作变得简单,你可以...

    PL/SqlDeveloper汉化版

    虽然目前来看 PL/SQL Developer 的功能远不如 SQL Developer,但它是用纯 JAVA 开发的 ORACLE 数据库管理工具,所以可以比较轻松的支持跨操作系统平台使用,可以在非 windows OS 上使用。由于 PL/SQL Developer 在 ...

    pl/sql developer 用户指南中文版

    2. 集成开发环境(IDE):PL/SQL Developer提供了全面的开发工具集,包括源代码编辑器、调试器、数据库连接管理、对象浏览器、数据查看器等,使开发者能高效地进行数据库应用开发。 3. 源代码编辑器:它提供语法...

    PL/SQL Developer 10

    plsqldev1001 oracle use tool

    PL/SQL Developer 64 bit

    1. 在PL/SQL Developer中执行该SQL查询,并查看执行计划。 2. 分析执行计划,找到性能瓶颈所在。 3. 对查询进行重构或添加索引等方式优化。 4. 再次查看执行计划,对比优化前后的差异。 5. 根据结果进一步调整,直到...

    PL/SQL Developer 6.05注册版-1

    PL/SQL Developer(pl/sql)是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。 <br>此版本包含注册文件和简体中文语言安装包 <br>Enhancements in PL/SQL Developer 7.1.5 ====================...

    pl/sql developer 8.0

    通常,.exe文件是Windows操作系统下的可执行文件,用户可以通过运行这个文件来安装或更新PL/SQL Developer。 在标签中,"plsql +developer 8.0"和"pl/sql developer 8.0"重复强调了软件的名称和版本,而"oracle...

    PL/SQL Developer 客户端

    PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加...

    使用PL/SQL Developer图形界面轻松实现oracle定期计划任务

    此外,为了监控和管理这些计划任务,你可以在PL/SQL Developer的“计划”视图中查看任务的状态、修改任务属性或停止任务执行。定期计划任务的管理和优化是数据库管理员日常工作中非常重要的一环,通过有效的计划任务...

    pl/sql developer 中文指南

    PL/SQL Developer的调试器是其一大亮点,它支持设置断点、单步执行、查看变量值、调用堆栈等调试功能,帮助开发者追踪和定位程序中的错误。 5. **数据查看与操作** 工具内置了数据浏览和操作功能,可以直接在结果...

    PL/SQL Developer快速输入插件

    PL/SQL Developer是一款专为Oracle数据库开发人员设计的集成开发环境(IDE),它提供了丰富的功能,包括编写、调试、测试和管理PL/SQL代码。在提高开发效率方面,这款工具的快速输入插件是一个非常实用的功能。这个...

    PL/SQL DEVELOPER(用户指南中文版)

    PL/SQL Developer是一款专为Oracle数据库开发者设计的强大集成开发环境(IDE),它旨在提升数据库应用程序的开发效率和质量。这款工具提供了丰富的特性,使得编写、调试、测试和管理PL/SQL代码变得更加简单易行。 ...

    PL/SQL Developer v8.0.zip

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

Global site tag (gtag.js) - Google Analytics