WEB开发网
开发学院数据库Oracle 解析Oracle 8i/9i的计划稳定性 阅读

解析Oracle 8i/9i的计划稳定性

 2006-08-05 11:58:19 来源:WEB开发网   
核心提示: create or replace procedure get_value (i_n1 in number,i_n2 in number,io_v1 out varchar2)asbeginselect v1into io_v1from so_demowhere n1 = i_n1and

create or replace procedure get_value (
i_n1 in number,
i_n2 in number,
io_v1 out varchar2
)
as
begin
select v1
into io_v1
from so_demo
where n1 = i_n1
and n2 = i_n2
;
end;
/

当然,也可以直接执行这个脚本来建立该过程--不过,为了更有效果,转到操作系统的命令行并且执行以下命令:

wrap iname=c_proc.sql

响应是:

Processing c_proc.sql to c_proc.plb

这里不是通过执行c_proc.sql脚本来产生该过程,而是执行看不到源码的c_proc.plb脚本,你将会发现在user_source的视图中找不到我们的SQL语句。

这个应用的作用是什么?

现在我们已经产生了一个模拟的应用,我们就可以运行它,打开sql_trace,看看有什么事情发生。我们将会发现这个SQL执行一个全表搜索来得到请求的数据。

在这个测试中,全表检索或许是最有效的方式--不过让我们假定已经证明使用一个单列的索引和and-equal选项才是最佳的执行路径时,我们可以怎样修改呢(无需在代码中加入提示)?

通过存储概要,答案是简单的。要达到我下面所做的事情实际上有好几种方法,因此不要认为这是唯一的做法。Oracle一直改进它的特性以方便使用,这里所讲的技术或许在未来的一个版本中就会消失。

你想该应用做什么?

要令Oracle如我们所想的那样运作,有三个阶段:

. 启动一个新的session(连接),然后重新运行该过程,首先告诉Oracle我们要跟踪将要运行的SQL语句和该SQL使用的路径。这里说的"路径"就是我们存储概要的第一个例子。

. 为有问题的SQL语句创建更好的存储概要,然后用好的代替有问题的。

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

Tags:解析 Oracle 计划

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