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

本文深入探讨数值类型在计算机中的表现,包括浮点与NUMBER类型的性能对比,通过实验揭示浮点类型的优势及其内部机制,同时提供业务场景下优化计算效率的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

那什么是数值类型?

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

性能是如何考虑的呢?

使用时有哪些技巧呢?

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

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

更多oracle性能详解请参见:http://www.icartype.com

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

总结下:

o浮点是硬件来计算的

oNUMBER类型,是由软件来计算的

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

createtablenumber_tuning

(num_typenumber,

float_typebinary_float,

double_typebinary_double

);

selectsum(ln(num_type))fromnumber_tuning;

selectsum(ln(float_type))fromnumber_tuning;

selectsum(ln(double_type))fromnumber_tuning;

第一条,sum(ln(num_type))

花了1.2

再来看第二条,sum(ln(float_type))

0.09

再来看第三条,sum(ln(double_type))

0.04

number类型花1.2秒,单浮点0.09秒,双浮点0.04

更多oracle性能详解请参见:http://www.icartype.com

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

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

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

使用cast函数

selectsum(ln(cast(num_typeasbinary_double)))

fromnumber_tuning;

更多oracle性能详解请参见http://www.icartype.com/?p=28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值