使用DECODE函数来减少处理时间
使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表
例如
SELECTCOUNT(*)SUM(SAL)
FROMEMP
WHEREDEPT_NO=
ANDENAMELIKESMITH%;
SELECTCOUNT(*)SUM(SAL)
FROMEMP
WHEREDEPT_NO=
ANDENAMELIKESMITH%;
你可以用DECODE函数高效地得到相同结果
SELECTCOUNT(DECODE(DEPT_NOXNULL))D_COUNT
COUNT(DECODE(DEPT_NOXNULL))D_COUNT
SUM(DECODE(DEPT_NOSALNULL))D_SAL
SUM(DECODE(DEPT_NOSALNULL))D_SAL
FROMEMPWHEREENAMELIKESMITH%;
类似的DECODE函数也可以运用于GROUP BY 和ORDER BY子句中
整合简单无关联的数据库访问
如果你有几个简单的数据库查询语句你可以把它们整合到一个查询中(即使它们之间没有关系)
例如
SELECTNAME
FROMEMP
WHEREEMP_NO=;
SELECTNAME
FROMDPT
WHEREDPT_NO=;
SELECTNAME
FROMCAT
WHERECAT_TYPE=RD;
上面的个查询可以被合并成一个
SELECTENAMEDNAMECNAME
FROMCATCDPTDEMPEDUALX
WHERENVL(XXDUMMY)=NVL(XEROWID(+))
ANDNVL(XXDUMMY)=NVL(XDROWID(+))
ANDNVL(XXDUMMY)=NVL(XCROWID(+))
ANDEEMP_NO(+)=
ANDDDEPT_NO(+)=
ANDCCAT_TYPE(+)=RD;
(译者按 虽然采取这种方法效率得到提高但是程序的可读性大大降低所以读者还是要权衡之间的利弊)