oracle使用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子句中.

原文地址:https://www.cnblogs.com/fanweisheng/p/11124309.html