![](https://csdnimg.cn/release/download_crawler_static/18158309/bg6.jpg)
在 SQL*Plus,SQL*Forms 和 Pro*C 中重新设置 ARRAYSIZE 参数,可以增加每次数
据库访问的检索数据量,建议值为 200。
8、使用 DECODE 函数来减少处理时间
使用 DECODE 函数可以避免重复扫描相同记录或重复连接相同的表。
例如:
select count(*), sum(sal)
from emp
where dept_no = 0020
and ename like 'SMITH%';
select count(*), sum(sal)
from , emp
where dept_no = 0030
and ename like 'SMITH%';
你可以用 DECODE 函数高效地得到相同结果:
select count(decode(dept_no, 0020, 'X', null)) d0020_count,
count(decode(dept_no, 0030, 'X', null)) d0030_count,
sum(decode(dept_no, 0020, sal, null)) d0020_sal,
sum(decode(dept_no, 0030, sal, null)) d0030_sal
from emp
where ename like 'SMITH%';
类似的,DECODE 函数也可以运用于 GROUP BY 和 ORDER BY 子句中。
9、整合简单,无关联的数据库访问
如果你有几个简单的数据库查询语句,即使它们之间没有关系,你也可以把它们整合到
一个查询中。例如:
select name from emp where emp_no = 1234;
select name from dpt where dpt_no = 10;
select name from cat where cat_type = 'RD';
上面的 3 个查询可以被合并成一个:
select e.name, d.name, c.name
from cat c, dpt d, emp e, dual x
where nvl('X', x.dummy) = nvl('X', e.rowid(+))
and nvl('X', x.dummy) = nvl('X', d.rowid(+))
and nvl('X', x.dummy) = nvl('X', c.rowid(+))
and e.emp_no(+) = 1234
and d.dept_no(+) = 10
and c.cat_type(+) = 'RD';