ORACLE性能技巧测试:NVL与DECODE

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值