用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧计算机应用

Oracle数据库的优化

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 11:55:12

2.8避免在SQL里使用PL/SQL功能调用
对于增加PL/SQL的使用,许多用户试图利PL/SQL功能的优势产生可重复使用的代码。其中一个强迫重复使用PL/SQL功能的方法是在SQL语句里使用。例如,可以创建一个将国际货币转换为US$的函数。这个函数称为US$。示例如下:
select      transaction_type, US$ (amount, currency)
from            international_transaction
where      US$ (amount, currency) > 1000;
执行前面的SQL语句没有所期望的那样好。在测试时,它的性能大约比下面得出相同结果的SQL语句慢大约几十倍。
select      transaction_type,
           amount*exchange_rate US$
from            exchange_rate er, international_transaction it
where      er.currency = it.currency
  and      amount*exchange_rate > 1000;
响应时间不同的原因是混合PL/SQL和SQL时,Oracle使用的机制不同。在SQL查询里嵌入PL/SQL功能时,在执行时,Oracle将调用分成两部分:用带有赋值变量的SQL语句代替功能调用以及对每一个函数调用的无名PL/SQL块。
select      transaction_type, :a1
from            international_transaction
where      :a1 > 1000

BEGIN
     :a1 := US$ (:amount, :currency);
END
对在international_transaction表里的每一行,将执行在前面示例里显示的无名块两次。无名块调用导致查询响应时间的剧增。应该避免在SQL语句里使用PL/SQL功能调用。


参考文献
[1] 瓮正科,王新英著.Oracle8.X For Windows NT实用教程[M].北京:清华大学出版社,1999.
[2] 萨师萱,王珊著.数据库系统概论[M]. 北京:高等教育出版社,2000.2.
[3] Eyal Aronoff,Kevin Loney,Noorali Sonawalla著, 李逸波、王华驹、马赛红、曲宁等译.Oracle8性能优化和管理手册[M].北京:电子工业出版社,2000.1.
[4] Peter Koletzke,Dr.Paul Dorsey著, 刘晓霞、孙登峰、曲京、何粼等译.Oracle Designer信息系统开发[M].
北京:机械工业出版社,1999.8

上一页  [1] [2] [3] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:9,734.37500 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号