WEB开发网
开发学院数据库Oracle 通过分析SQL语句的执行计划优化SQL(二) 阅读

通过分析SQL语句的执行计划优化SQL(二)

 2007-07-31 12:37:34 来源:WEB开发网   
核心提示: 如DEFINE阶段可能在FETCH阶段之前,这主要依赖你如何书写代码,通过分析SQL语句的执行计划优化SQL(二)(2),对许多oracle的工具来说,其中某些阶段会自动执行,可能是隐含的,也可能显式的创建,绝大多数用户不需要关心各个阶段的细节问题,然而

如DEFINE阶段可能在FETCH阶段之前,这主要依赖你如何书写代码。

对许多oracle的工具来说,其中某些阶段会自动执行。绝大多数用户不需要关心各个阶段的细节问题,然而,知道执行的各个阶段还是有必要的,这会帮助你写出更高效的SQL语句来,而且还可以让你猜测出性能差的SQL语句主要是由于哪一个阶段造成的,然后我们针对这个具体的阶段,找出解决的办法。

DML语句的处理

本节给出一个例子来说明在DML语句处理的各个阶段到底发生了什么事情。

假设你使用Pro*C程序来为指定部门的所有职员增加工资。程序已经连到正确的用户,你可以在你的程序中嵌入如下的SQL语句:

EXEC SQL UPDATE employees
SET salary = 1.10 * salary
WHERE department_id = :var_department_id;

var_department_id是程序变量,里面包含部门号,我们要修改该部门的职员的工资。当这个SQL语句执行时,使用该变量的值。

每种类型的语句都需要如下阶段:

第1步: Create a Cursor 创建游标

第2步: Parse the Statement 分析语句

第3步: Describe Results of a Query 描述查询的结果集

第4步: Define Output of a Query 定义查询的输出数据

第5步: Bind Any Variables 绑定变量

第6步: Parallelize the Statement 并行执行语句

第7步: Run the Statement 运行语句

第8步: Fetch Rows of a Query 取查询出来的行

第9步: Close the Cursor 关闭游标

如果使用了并行功能,还会包含下面这个阶段:

下面具体说一下每一步中都发生了什么事情:.

第1步: 创建游标(Create a Cursor)

由程序接口调用创建一个游标(cursor)。任何SQL语句都会创建它,特别在运行DML语句时,都是自动创建游标的,不需要开发人员干预。多数应用中,游标的创建是自动的。然而,在预编译程序(pro*c)中游标的创建,可能是隐含的,也可能显式的创建。在存储过程中也是这样的。

上一页  1 2 3 4 5 6  下一页

Tags:通过 分析 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接