对oracle数字类型的研究
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
对oracle数字类型的研究的更多相关文章
- Oracle笔记----oracle数字类型number自增
创建序列 create sequence seq_student start increment maxvalue nominvalue nocycle nocache; 创建触发器 create o ...
- oracle字段类型
oracle 字段类型CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 byt ...
- Oracle 日期类型timestamp(时间戳)和date类型使用
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- oracle 字段类型详解
CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749 NCHAR 根据字符集而定的固定长度字符串 最大长度 ...
- oracle有三种类型的异常错误: 预定义 ( Predefined )错误里面的常见错误
oracle有三种类型的异常错误: 预定义 ( Predefined )错误, 非预定义 ( Predefined )错误, 用户定义(User_define) 错误 预定义 ( Predefined ...
- Oracle数据库类型
Oracle数据库类型 字符类型char[(length)] 定长字符 最长2000字节varchar2[(length)] 可变长度的字符数据类型,最长4000字节NCHAR[(length)] 固 ...
- Oracle字段类型及存储(一)
Oracle中2000个byte,并不是2000个字符的意思,1个字符在Oracle中可能是1个byte到4个byte不等,需看数据库字符集的设置了. 对GBK字符集而言,ASCII码中128个字符使 ...
- oracle 之flashback 深入研究。
oracle 之flashback 深入研究. 今天是2013-08-24,开始进行oracle flashback 内部原理研究,记录一下笔记. SQL> startup ORACLE ins ...
- Python3基本数据类型(一、数字类型)
第一次写博客,感觉心情比较紧张,有一种要上台演讲的紧张感(虽然可能大概也许不会有人看).在此立个flag,以后每个学习阶段都要写一篇博客,来记录自己学习成长的这段日子.Fighting! 废话不多说, ...
随机推荐
- Problem E: 零起点学算法84——数组中删数II
#include<stdio.h> int main() { ],b[],i,flag=; while(scanf("%d",&n)!=EOF) { ;i< ...
- codevs 3641 上帝选人
3641 上帝选人 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 世界上的人都有智商IQ和情商EQ.我们用两个数字来表示人的 ...
- 《SQL Server企业级平台管理实践》读书笔记
http://www.cnblogs.com/zhijianliutang/category/277162.html
- [Asp.net本质论]重新认识url
引言 之前大部分时间,一直在学c#,打算将asp.net本质论好好学习一下,之前虽然已经看了两边了,总感觉看过,没做笔记等于白看了,一点印象也没.打算将书中的代码,自己实现一下,在敲代码时要一直反思, ...
- 【shiro】报错:Caused by: java.lang.ClassNotFoundException: org.apache.shiro.spring.LifecycleBeanPostProcessor
Caused by: java.lang.ClassNotFoundException: org.apache.shiro.spring.LifecycleBeanPostProcessor at o ...
- python笔记12-python多线程之事件(Event)
前言 小伙伴a,b,c围着吃火锅,当菜上齐了,请客的主人说:开吃!,于是小伙伴一起动筷子,这种场景如何实现 Event(事件) Event(事件):事件处理的机制:全局定义了一个内置标志Flag,如果 ...
- eclipse 性能调优之内存分配
转自:http://blog.csdn.net/defonds/article/details/6289236 如果觉得自己的 eclipse 比较慢,可以通过修改 %eclipse_home%/ec ...
- 一个简单好用的zabbix告警信息发送工具
之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...
- OpenCV支持向量机SVM对线性不可分数据的处理
支持向量机对线性不可分数据的处理 目标 本文档尝试解答如下问题: 在训练数据线性不可分时,如何定义此情形下支持向量机的最优化问题. 如何设置 CvSVMParams 中的参数来解决此类问题. 动机 为 ...
- 初入android驱动开发之字符设备(一)
大学毕业,初入公司,招进去的是android驱动开发工程师的岗位,那时候刚进去,首先学到的就是如何搭建kernel.android的编译环境,然后就是了解如何刷设备以及一些最基本的工具.如adb.fa ...