摘要: 平时在PL/SQL中的编程中遇到一些问题,这里以问答的形式来进行把它们总结下来,以供大家分享。 1、当需要向表中装载大量的数据流或者需要处理大量的数据流的时候,能否使用管道提高处理效率? 管道函数对于改善并行查询的性能非常方便,它加快往表中加载数据的速度。管道函数的使用总结如下两点: 每当在查询里使用PL/SQL函数时,该查询将被序列化,即一个处理器只能运行一个查询实例,那么在这种情况下不可能使用并行查询(比如在数据仓库中要经常使用这项技术)。因此,为了使用并行查询就必须使用管道函数,这样也就加快了执行的速度。 管道函数的输入参数必须是一个引用记录集类型(即ref cursor),而返... 阅读全文
posted @ 2011-08-25 09:10 郭振斌 阅读(1425) 评论(0) 推荐(0) 编辑
摘要: select,update,delete 语句中的子查询应当有规律地查找少于20%的表行.如果一个语句查找的行数超过总行数的20%,它将不能通过使用索引获得性能上的提高. 索引可能产生碎片,因为记录从表中删除时,相应也从表的索引中删除.表释放的空间可以再用,而索引释放的空间却不能再用.频繁进行删除操作的被索引的表,应当阶段性地重建索引,以避免在索引中造成空间碎片,影响性能.在许可的条件下,也可以阶段性地truncate表,truncate命令删除表中所有记录,也删除索引碎片. 阅读全文
posted @ 2011-08-25 09:01 郭振斌 阅读(545) 评论(0) 推荐(0) 编辑
摘要: EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。 使用技巧 1. EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交。 如果通过EXECUTE IMMEDIATE处理DML命令,那么在完成以前需要显式提交或者作为EXECUTE 阅读全文
posted @ 2011-08-25 08:49 郭振斌 阅读(441) 评论(0) 推荐(0) 编辑