Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91803030
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-12 17:59:45

    来源:赛迪网技术社区    作者:meili

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子句中。

阅读(289) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~