摘要:
(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件.. 阅读全文
posted @ 2007-06-26 10:04
快乐就好
阅读(1254)
评论(0)
推荐(1)
摘要:
[Oracle]高效的SQL语句之分析函数(一)--sum() 实际应用中我们可以通过sum()统计出组中的总计或者是累加值,具体示例如下:1.创建演示表createtableempasselect*fromscott.emp;altertableempaddconstraintemp_pkprimarykey(empno);createtabledeptasselect*fromscott.dept;altertabledeptaddconstraintdept_pkprimarykey(deptno);2. sum()语句如下:selectdeptno,ename,sal, --按照部门. 阅读全文
posted @ 2007-06-26 09:52
快乐就好
阅读(1043)
评论(0)
推荐(0)
摘要:
这三个分析函数都可以在各个分组内从1开始排序。ROW_NUMBER()是没有重复值的,可以利用它实现分页显示。DENSE_RANK()是连续排序,有两个第二名时仍然跟着第三名。RANK()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)。SELECT * FROM ( SELECT deptno, ename, sal, ROW_NUMBER() OVER ( PARTITION BY deptno ORDER BY sal DESC ) Top3 FROM emp)WHERE Top3 <= 3/ DEPTNO ENAME SAL TOP3---------- ---- 阅读全文
posted @ 2007-06-26 09:37
快乐就好
阅读(733)
评论(0)
推荐(0)

浙公网安备 33010602011771号