太多了,想到的一些记录以下,提醒自己。欢迎补充:
1、多用包(PACKAGE)
引用TomKyte的话就是“什么时候用包?任何时候!”
他的理由是实际业务中很少有一个存储过程或函数能独立完成一个业务场景,必定是一堆有逻辑关联的存储过程、函数、类型等才能完整的实现一个业务。
2、多用变量绑定
这个是共识,好处很多,提升性能(软解析)、防止SQL注入等等。
3、多用锚定变量声明(如%TYPE,%ROWTYPE)
好处:基表修改长度或类型时对程序没有影响。
4、用lob类型替代long类型
Oracle官方推荐,long类型有很多限制,而且lob类型的支持很强
5、模块化编程
好处:提高重用性、精简代码、易于维护、可读性提升
6、用管道(pipeline)函数
好处是提升函数响应速度,支持并行减少处理时间
7、用nocopy传大对象参数
对于体积庞大的数据结构(如集合),用nocopy传参可以显著改善性能
8、用命名法调用取代位置法调用
位置法:EXEC P_TEST(‘A’,’B’);
命名法:EXEC P_TEST(PARA1=>’A’,PARA2=>’B’);
优点是:不容易出错,被调用程序参数增加或变序后不受影响
9、少用goto、exit等短路设计
原因是容易造成逻辑错误
10、函数只在最后放一个return,而不是有多个return
原因同上,减少逻辑错误
10、用deterministic声明频繁使用重复参数的确定性函数
deterministic函数会缓存函数结果,大大改善重复调用的时间。
11、少用触发器
原因是容易导致业务逻辑失控
12、用bulk collect、forall、parallel等方法提升批量操作性能
显著提升大数据量处理的效率