ORACLE数值类型的性能优化技巧number,Int,float

那什么是数值类型?

比如常见的有 number,Int,float,最常用的是number类型

性能是如何考虑的呢? 

使用时有哪些技巧呢? 

这些是我们重点考虑的知识点.我们说精度越低,存储的空间越小,性能越高,其实空间节约对于性能的提高是非常有限的。 有时,我们还需要利用空间来换取时间呢,浮点类型还有更重要的因素来影响性能 ,那就是浮点运算机制跟number的运算机制是完全不同的 

记住:浮点的性能要高很多 


那我们要从浮点的内部机制来说起 浮点数是一个有理数子集中一个数的数字表示,通常用于在计算机上近似一个任意的实数 ,浮点是依赖硬件设备的 

总结下:

浮点是硬件来计算的

o NUMBER类型,是由软件来计算的

他们两者的性能差至少在1个数量级

 

create table number_tuning

( num_type     number,

  float_type   binary_float,

  double_type  binary_double

);

select sum(ln(num_type)) from number_tuning;

select sum(ln(float_type)) from number_tuning;

select sum(ln(double_type)) from number_tuning;

sql执行结果性能比较结果

http://www.icartype.com/?p=28

双精度浮点通常是最快的 ,我们说了,空间不是影响性能的关键 ,这个实验是不是看的很清楚,浮点类型比Number类型快很多 ,因为浮点是硬件计算的 

 

如果我们的业务表已经设置成NUMBER类型了 ,我又不想把表结构的NUMBER类型转换成浮点类型,又想提高计算效率 

方法是:我们可以在语句级强制类型转换,而不在表结构级上转换 

使用cast函数 

请参见http://www.icartype.com/?p=28


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值