1.10 小结

本章介绍了多个不适合使用PL/SQL的场景。请牢记,SQL是一种集合语言,而PL/SQL是过程性语言。在设计程序时,可以考虑下列建议。

  • 用SQL解决查询问题。用集合的方式进行思考,用SQL写的查询,比起用嵌套循环逐行处理的方式执行查询的PL/SQL程序更加易于调优。
  • 如果必须用PL/SQL来编写代码,请尝试尽可能将较多的工作负担交给SQL引擎。这种技术随着Exadata等新技术的出现而变得更重要。Exadata数据库机中的智能扫描设备能将工作负担交给存储节点,从而提高用SQL编写的程序性能。而PL/SQL结构不能从Exadata数据库机获得同样的好处,至少在11gR2中是不能的。
  • 如果必须使用循环,那么使用PL/SQL提供的批量处理功能。利用本章介绍的技术减少在PL/SQL中的不必要工作,比如不必要的函数执行或者对DUAL表的过度访问。
  • 只把使用单行、基于循环的处理作为最后的手段。

没错,用PL/SQL处理所有的数据和业务,用Java或其他语言来展现界面和进行用户合法性验证。利用本章描述的方法可以编写出高度可扩展的PL/SQL语言程序。

目录