Oracle 查询优化改写(第一章)

第一章 单表查询

1.查询空值

Oracle 查询优化改写(第一章)_第1张图片

2.将空值转换为实际值 

不采用nvl()函数,而使用COALESCE函数语法为COALESCE(表达式1,表达式2,...,表达式n),n>=2,此表达式的功能为返回第一个不为空的表达式,如果都为空则返回空值。
注意:所有表达式必须为同一类型或者能转换成同一类型。

CREATE OR REPLACE VIEW v AS
SELECT NULL AS C1, NULL AS C2, 1 AS C3, NULL AS C4, 2 AS C5, NULL AS C6 FROM tmp
UNION ALL
SELECT NULL AS C1, NULL AS C2, NULL AS C3, 8 AS C4, NULL AS C5, 5 AS C6 FROM tmp;
 
 
SQL> select * from v;
 
C1     C2        C3           C4      C5         C6
- - ---------- ---------- ---------- ----------
                 1            2
                 8            5
 --COALESCE使用
SQL> SELECT COALESCE(C1, C2, C3, C4, C5, C6) AS c FROM V;
 
     C
----------
     1
     8

 --用nvl函数
SELECT nvl(nvl(nvl(nvl(nvl(c1, c2), c3), c4), c5), c6) AS c FROM v;

总结:
NVL:如果第一个值为NULL取默认值,默认值是自己赋值上去的是个常数。支持两个参数。其本质是个函数。
coalesce:如果第一个参数为空就取第二个参数的值,第二个参数可以为常数也可以为表达式(字段,语句等)。以此类推,支持多个参数。更常用,其本质是个语句,更像个if语句,效率更高,建议使用。


3.在where子句中引用取别名的列

Oracle 查询优化改写(第一章)_第2张图片

 4.在select语句中使用条件逻辑

有时为了更加清楚的地区分返回的信息,需要做如下处理:

 Oracle 查询优化改写(第一章)_第3张图片

 5.限制返回的行数

Oracle 查询优化改写(第一章)_第4张图片

6.从表中随机返回N条记录

先生成随机排序,再取出数据。

 

 7.模糊查询

Oracle 查询优化改写(第一章)_第5张图片

 Oracle 查询优化改写(第一章)_第6张图片

参考文献:Oracle查询优化改写技巧与案例2.0  作  译  者:有教无类,落落

你可能感兴趣的:(数据仓库,oracle,数据库)