数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle语句优化30个规则详解(4)


发布日期:2022年11月09日
 
Oracle语句优化30个规则详解

使用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;

(译者按 虽然采取这种方法效率得到提高但是程序的可读性大大降低所以读者还是要权衡之间的利弊)

上一篇:配置OracleEnterpriseManager过程总结

下一篇:Oracle 10g学习手册2:安装与构建三(图)