Oracle的数字类型主要有number,binary_float,binary_double三类,其他的像int,number(p,s)等等大多数都是由这些引申出来的。这部分的理解主要来自oracle11g编程艺术。

其中提到的一个很有意思的东西就是number是软件模拟运算,而binary类型则是硬件直接运算,所以在性能方便的差距还是很大的,我们以事实说话。

SELECT * FROM NUMTABLE;

里面的数字是1----77760,类型分别为number,binary_float,binary_double。

我们做如下运算:

SELECT SUM(LN(NUM_TYPE)) FROM NUMTABLE;

第一次执行花费时间:4.384s     第二次执行:3.884s

SELECT SUM(LN(float_type)) FROM NUMTABLE;

第一次执行花费时间:0.125s     第二次执行:0.078s

结论:可以直观的看出两个数字类型在处理方便的性能差距,还是很明显的,性能差距在50倍以上。

但是我们不要高兴的太早了,binary类型的缺点就是精度太低,所以如果是对数据精度有很高的要求,就不能用了。

举例:

create table numtable2 (
num_type number,
float_type binary_float,
double_type binary_float);

insert into numtable2 values(1234567890.0987654321,1234567890.0987654321,1234567890.0987654321);

commit;

SELECT * FROM NUMTABLE2;

NUM_TYPE                     |FLOAT_TYPE                  |DOUBLE_TYPE
---------------------- ---|--------------------- ----|--------------------
12,3456,7890.09876543 |12,3456,7940.00000000|12,3456,7940.00000000

那么,有没有一种适中的方法,玩么解决呢?在oracle11g编程艺术中,提出了CAST,自己测试了,虽然cast将number强制转换为binary得到了结果,但是和number运算的结果还是有细小的差异的,看来金融方面还是不能适用。

文章中有问题的地方还请大家指正,共同进步。

Email:goodboybing@163.com

最新文章

  1. Linux CentOS6.x ip设置(网卡设置)
  2. 蓝牙—RFCOMM协议
  3. Java继承中属性、方法和对象的关系
  4. java的I/O操作:文件的路径
  5. hdu 1061 Rightmost Digit
  6. 九度OJ 1352 和为S的两个数字
  7. Poj 2528-Mayor's posters 线段切割
  8. Python按行读文件对比
  9. 四步安装typecho(LNMP环境)
  10. [转载]Vector用法(C++ Primer中文版)
  11. sublime 挪移的第一层(插件的安装和使用)
  12. android开发要避免的那些坑
  13. BZOJ_3261_最大异或和_可持久化trie
  14. mongodb怎么创建数据库和配置用户
  15. JMeter 接口测试(一)
  16. HDU 5115 (杀狼,区间DP)
  17. mysql 按类别之用一条SQL语句查询出每个班前10名学生数据
  18. windows程序设计 获取系统文件路径
  19. PAT A1143 Lowest Common Ancestor (30 分)——二叉搜索树,lca
  20. Stringbuffer与substring

热门文章

  1. bzoj 3140: [Hnoi2013]消毒
  2. 关于Mysort实验的补发博客
  3. SourceTree运行慢的解决方案
  4. Maven打war包时,添加本地jar包
  5. [转]SpringMVC入门
  6. CentOS 6.9下KVM虚拟机通过virt-clone克隆虚拟机(转)
  7. 基于 Dapper 的一个 DbUtils
  8. Web安全测试指南--文件系统
  9. 如何在form初始化时自动隐藏FOLDER列
  10. [Ubuntu Setup] Ubuntu 13.04 安装 ia32-libs