易截截图软件、单文件、免安装、纯绿色、仅160KB

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

第十二章 PL/SQL应用程序性能调优
1、PL/SQL性能问题的缘由
应基于PL/SQL的应用程序施行效率低下时,通常是因为不好的SQL话语、编程步骤,对PL/SQL基础掌握糟糕或是乱用共享内存储器促成的。
•PL/SQL中不好的SQL话语
PL/SQL编程看上去相对照较简单,由于它们的复杂内容都掩藏在SQL话语中,SQL话语经常分担大量的工作。这乃是为何不好的SQL话语是施行效率低下的重要缘故了。如若一个程序中包孕很多不好的SQL话语,那么,无论是PL/SQL话语写的有何其美都是于事无补的。
如其SQL话语减低了我们的程序速度的话,将要按底下列表中的步骤分析一下子它们的执行计划和性能,其后从新编纂SQL话语。比如,查询优化器的揭示就可能会排除掉问题,如没有必要的全表扫描。
一.EXPLAIN PLAN话语
二.施用TKPROF的SQL Trace效能
三.Oracle Trace效能
•糟糕的编程习气
正常,糟糕的编程习气也会给程序带回负面影响。这种情况下,即使是有心得的程序员写出的代码也也许妨碍性能发挥。
至于给定的一项任务,无论是所选的程序语言有何等适合,编纂品质较差的子程序(比如,一个很慢的分门别类或检索函数)或许毁掉整个性能。假设有一个急需被应用程序频繁调用的查询函数,如其这个函数不是应用哈希或二分法,而是直接运用线性查寻,就会大大影响效率。糟糕的程序指的是那些带有从未有过运用过的变量的,传送没有必要的参数的,把初始化或计算放到用不着的循环中施行的程序之类。
•内置函数的反复
PL/SQL提供了好多高度优化过的函数,如REPLACE、TRANSLATE、SUBSTR、INSTR、RPAD和LTRIM等。不用手工编撰我们自各儿的版本,由于内置函数已经是很高效率的了。即或内置函数的效能远远超过我们的亟需,也不用手工兑现它们效能的子集。
•低效的流程统制话语
在计算逻辑表达式值的时分,PL/SQL运用短路的计算模式。且不说,万一结果可以被确定下来,PL/SQL就会终止余下的表达式计算。比如,下部的OR表达式,应sal比1500小的时分,操作符左边的值乃是TRUE,之所以PL/SQL就不会再计算操作符右侧表达式的值:
IF (sal < 1500) OR (comm IS NULL) THEN
...
END IF;
现下,考虑下部的AND表达式:
IF credit_ok(cust_id) AND (loan < 5000) THEN
...
END IF;
在上面的函数中,布尔函数credit_ok老是被调用。但是,如其我们向底下这么退换两个表达式的位置:
IF (loan < 5000) AND credit_ok(cust_id) THEN
...
E


相关文档:

经典sql语句,实现了修改,增加,删除,判断表字段

create database test1
use test1
create table admin
(
   id int primary key ,
   name varchar(50),
   pwd  varchar(50),
)
insert into admin values(1,'aa','aa')
alter  table   admin   add   tel  varchar(50)   ......

在SQL数据库中导入Excel

--Excel导入sql存储过程(简单)
Create procedure import
    @tablename varchar(100),
    @filepath varchar(100) 
as
EXEC( 'INSERT INTO '  + @tablename +
' SELECT * from
OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'',''Data Source="' + @filepath + '";
......

Hibernate,java,sql类型的对应关系


Java数据类型
Hibernate数据类型
标准SQL数据类型
byte
byte
TINYINT
short
short
SMALLINT
int
integer
INGEGER
long
long
BIGINT
float
float
FLOAT
double
double
DOUBLE
java.math.BigDecimal
big_decimal
NUMERIC
char, java.lang.Character
character
CHAR(1)
boolean, java.lang.Boole ......

Pro*C 中嵌入pl/sql块

/* 包含C头文件 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* 包含SQLCA头文件 */
EXEC SQL INCLUDE sqlca;
EXEC SQL INCLUDE sqlda;
int main()
{
    EXEC SQL BEGIN DECLARE SECTION;
    int  money;
    ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号