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
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
1.<sql:setDataSource>
设置数据源
<sql:setDataSource dataSource=""|url="jdbcUrl" driver="" user="" password=""
var="varName" scope=""/>
var:String DataSource
dataSource的值有两种形式:1.指定数据源的J ......
--如果存在数据库programmerPay 就删除
if exists (select * from sysdatabases where name='programmerPay')
drop database programmerPay
go
--创建数据库programmerPay
create database programmerPay
on primary
(
name ='programmerPay_data',
filename='D:\programmerPay\programmerPay_data.mdf',
......
SQL操作全集
下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CREATE ......
/* 包含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;
......