在 Oracle SQL 中,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 函数中检查 DEPT_NO,按条件统计各部门的员工数量和薪资总和,避免了多次查询和计算,显著提高了查询性能。