1.使用 Out jion 代替 Not In可以提高检索额效率;
使用 NOT EXISTS 代替 Not IN 可以更加提高效率.
----------可以参考Oracle9i Chapter12(Page229-230)
2.使用UNION,INTERSECT,MINUS 时两个表用select返回的的列的数据类型和数目必须相同
显示的结果将和前面的一个select语句查询的字段的名称相同
3.在 IN 和UNION,INTERSECT,MINUS混合使用的地方,IN具有更高的优先级
4.Oracel9i第十三章
关于一些复杂的使用:
(1)RANK(input)函数,确定input指定的值的级别,可以和within group和order by在一块使用
在视图中使用.
例子:select RANK(3) within group (order by Counter desc ) from CATEGORY_COUNT;
CATEGORY_COUNT是视图.
(2)PERCENT_RANK(input)函数,用法同上.
在视图中使用.
(3)使用临时表(只是在这次会话中存在,或数据只是在这次事务中存在)
create global tempory table
(.....
)
on commit perserve rows --表示在本次会话中存在
on commit delete rows --表示事务结束时就删除
(4)使用ROLLUP,GROUP,CUBE,GROUPING
ROLLUP,CUBE一般都是用在GROUP的子句中.
ROLLUP和sqlplus中的compute的功能有些相似,先对每个分组进行统计,然后再对整个结果进行统计.
GROUPING函数可以用来区分由ROLLUP条件查询出来的分组统计和总计.
CUBE也是用来进行统计的.
(5)Family Trees and connect by
P244-254页,
查询的表中有某个字段是另一个字段的祖先.