快速业务通道

PL/SQL用户指南与参考--PL/SQL应用程序性能调优

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-18
EN
...
END IF;

那么,函数惟独在表达式loan < 5000的值为TRUE的时分才会被调用,这种状况也适用于EXIT-WHEN话语。

&#8226;隐式的数据门类变换
运行时,PL/SQL能把构造化不同的数据部类进展隐式的变换。譬如说,把PLS_INTEGER变量赋给一个NUMBER变量,因为它们的内在表现形式不一样,之所以就会引起隐式地数据部类变换。

避免隐式的门类变换可以改进性能。如次面的例证,15是一个有符号的4字节数目字,在加法演算事前,PL/SQL务必把它转换成Oracle的数目字门类。但是,浮点数15.0运用22字节的Oracle数目字表现,之所以就没有必要开展变换。

DECLARE
n NUMBER;
c CHAR(五);
BEGIN
n := n + 15; -- converted
n := n + 15.0; -- not converted
...
END;

这边再有一个事例:

DECLARE
c CHAR(五);
BEGIN
c := 25; -- converted
c := ''25''; -- not converted
...
END;

&#8226;不适当的数目字门类宣言
数据门类NUMBER和它的子部类都是22字节,数据库格式的数目字,它们易于移栽并且能顺应于不同的长度与精密度。当我们亟需宣言一个整型变量时,快要应用PLS_INTEGER,它是最高效率的数目字门类。这是由于PLS_INTEGER所需的内存储器要比INTEGER和NUMBER门类要少。一样, PLS_INTEGER运用机器演算,之所以它的演算速度要比BINARY_INTEGER、INTEGER或NUMBER快得多。

另外,INTEGER、NATURAL、NATURALN、POSITIVE、POSITIVEN和SIGNTYPE都是受约束的子门类。之所以,它们的变量急需在运行时稽查精密度,这就会影响到效率。

&#8226;用不着的NOT NULL约束
PL/SQL中,施用NOT NULL约束也会罗致性能亏耗。如次例所示:

PROCEDURE calc_m IS
m NUMBER NOT NULL := 零;
a NUMBER;
b NUMBER;
BEGIN
...
m := a + b;
...
END;

由于m是受NOT NULL约束的,表达式a + b的值就会赋给暂时变量,其后PL/SQL会对这个暂时变量作判空测试。如其变量不是空,它的值就能赋给m,要不然就会出现异常。但是,如若m不是有约束限制的话,结果值就会直接赋给m。更高效率的写法如次:

PROCEDURE calc_m IS
m NUMBER; -- no constraint
a NUMBER;
b NUMBER;
BEGIN
...
m := a + b;
IF m IS NULL THEN -- enforce constraint programmatically
...
END IF;
END;

注意,NATURALN和POSTIVEN都是NOT NULL,之所以它们也同样会影响性能。

&#8226;VARCHAR二变量的长度宣言
至于VARCHAR2部类,我们在内存储器应用和效率上亟需作出一个衡量。关于

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号