ORACLE性能技巧测试:NVL与DECODE

来源:互联网 发布:node.js哪些教程好 编辑:程序博客网 时间:2024/05/21 08:54

1.典型的SQL语句如下

select decode(a,1,'yyy',2,'xxx') from t;

  转换过程化后的语句是

IF a=1 THEN 

   'yyy'

ELSIF a=2 THEN

   'xxx'

end if;

DECODE可以用CASE语句来代替

第一种:

case i when 5 then five 

      when 6 then six

     else  I just don't know

end

第二种:

case  when i=5 then five 

      when i=6 then six

     else  I just don't know

end


2.NVLNVL2函数

通常NULL的操作,合法的表达式有两个

NVL2函数也是判断空的函数,但是有3个参数

NVL(A,B)

NVL1(A,B,C)

NVL执行机制及其优化技巧:http://www.icartype.com/?p=23

3.NVL也可以转换成DECODE语句

DECODE的机制是不是跟NVL不同呢,

是不是可以避免NVL的隐患呢,答案是:可以,我们可以使用DECODE函数既能完成这业务功能,又能不产生性能问题

4.本实验是提醒各位,Nvl函数一些内部的机制,避免一些问题发生,

都是一些细节的东西,如果不注意,差别是巨大的,

代价也是巨大的,所以说细节决定命运。

 

我问大家,DECODE后面的表达式,先后顺序会影响性能吗?

更多oracle性能详解请参见:oracle性能详解

0 0