PL/SQL中的编程总结

来源:互联网 发布:梦幻西游账号买卖淘宝 编辑:程序博客网 时间:2024/06/14 14:28
 
1、当需要向表中装大量的数据流或者需要理大量的数据流的候,能否使用管道提高理效率?  
  管道函数于改善并行查询的性能非常方便,它加快往表中加数据的速度。管道函数的使用总结如下两点:  
  当在查询里使用PL/SQL函数该查询将被序列化,即一个理器只能运行一个查询实例,那这种情况下不可能使用并行查询(比如在数据仓库中要常使用这项)。因此,了使用并行查询就必使用管道函数,这样也就加快了行的速度。  
  管道函数的入参数必是一个引用记录型(即ref cursor),而返回的是嵌套表型(其表中一行对应每一个引用记录)。在使用管道函数之前,必先在程序写上PARALLEL_ENABLE这样才能在查询语句中使用管道函数来理了。
  
2
如何使PL/SQL程序等待一段时间执行?  
  方法就是使用DBMS_LOCK包的SLEEP函数,可以行精确定,其  
  DBMS_LOCK.SLEEP (seconds IN NUMBER);
  
3
.需要在一表插入一条记录之后等若干秒后再行另外一个操作,如何在PL/SQL程序里行定操作?  
  一般的做法是用循作延,利用 DBMS_UTILITYgettime函数来检测当前的时间,程序代如下:  
  DECLARE
  v_delaytime CONSTANT INTEGER := 100;
  v_starttime INTEGER ;
  v_endtime INTEGER ;
  BEGIN
  V_starttime := DBMS_UTILITY.get_time;
  V_endtime := DBMS_UTILITY.get_time;
  While abs(V_endtime- V_starttime)< v_delaytime loop
  /*空循或者简单的耗时执*/
  End loop;
  END;
  /  
  另外如果是不同会session)之的定,就必使用DBMS_PIPE包的函数来实现话间的消息传递
  
4
.当PL/SQL返回一个数据集的候,使用集合是游  
  一般情况下,有以下两点作依据:  
  1) 如果PL/SQL程序返回多多行数据另外一个PL/SQL程序的里就建使用集合,因为这样可以利用集合的批收集(bulk collection)来提高从数据提取数据的速度。  
  2) 如果需要在PL/SQL程序的境中把数据返回到宿主境中(如Sql*plus,c,delphi等),这时应该使用游标变量来返回些数据,因几乎所有的宿主言都支持游标变量,但不是所有的宿主言都支持集合。这样可以增程序的可移植性。
  
5
.如何更有效的在PL/SQL中使用游  
  游PL/SQL中一个非常重要的概念,数据索主要依靠游来操作。在PL/SQL中有两,一式游,如select clno into v_clno from table_detail.另外一式游,如cursor v_cur is select clno from table_detail于游的使用出以下几点建  
  1) 尽可能的使用bulk collection。它能够较大的提高运行性能,在Oracl9i的第二版,甚至可以使用bulk collection来直接将数据写入到记录  
  2) 尽量使用式游理,因式游式游的速度更快一些。  
  3) 如果查询的表很小或者是静的,可以把存到一个包的集合里。这样,你的查询函数就直接从集合里(即程全局区,PGA cache),而不是从系全局区(SGA)来取数据,这样理速度会提升很多
 
6. 除表的注意事  
  在除一个表中的全部数据使用TRUNCATE TABLE 表名;DROP TABLEDELETE * FROM 表名TABLESPACE表空间该表的占用空并未放,反几次DROPDELETE操作后,TABLESPACE上百兆的空就被耗光了。
 
7.外部"+"的用法  
  外部"+"按其在"="的左或右分左接和右.若不"+"运算符的表中的一个行不直接匹配于"+"算符的表中的任何行,前者的行与后者中的一个空行相匹配并被返回.若二者均不’+’,二者中无法匹配的均被返回.利用外部"+",可以替代效率十分低下的 not in 运算,大大提高运行速度.例如,下面条命令行起来很慢  
    用外接提高表接的查询
 
原创粉丝点击