数据库任务重构
在SQL擅长的地方使用SQL。如果是SQL很容易就能完成的事,就没必要在代码中做这种事,譬如汇总。SQL能更快地处理数据。设计SQL就是为了做这些事的。
假定成功。先执行后检查执行是否像预期的那样起了作用。
更改代码结构。如果接连有两条语句访问同一个表,那么你必须质疑该程序在这两条语句之间所做的事情是否有足够的理由对数据库服务器访问两次。
合并语句。通常只要在where子句中加上or和聪明的使用case,就能将运行时间缩短2倍、3倍或更多倍,这就看你能将多少条语句合在一起了
使用汇总
用coalesce()或nvl()代替if ... is null
使用异常。避免多次访问同一张表,条件判断在异常处理块内解决
逻辑变换。即使不能将其改成一条语句,一点改进也能带来显著的改进。
select from A where ...test on result of the queryif some condition update table Belse update table C
update table C where (includes condition on A)if nothing is updated then update table B
select c1, ... into var1, ... from T where ...if (var1 = ...)then New operations against the databaseend if;