Oracle主键:NUMBER与NUMBER(7,0)
发布时间:2020-12-12 13:12:14 所属栏目:百科 来源:网络整理
导读:指定PK的精度有什么好处吗?鉴于可能永远不会超过几千条记录,7,0是否足够? 没有指定精度的危险吗? NUMBER(7,0)只限制了值的域. 他们的内部表现没有区别: CREATE TABLE t_pk (col1 NUMBER(7,0) NOT NULL,col2 NUMBER(38) NOT NULL)INSERTINTO t_pkVALUES (
指定PK的精度有什么好处吗?鉴于可能永远不会超过几千条记录,7,0是否足够?
没有指定精度的危险吗? NUMBER(7,0)只限制了值的域.他们的内部表现没有区别: CREATE TABLE t_pk (col1 NUMBER(7,0) NOT NULL,col2 NUMBER(38) NOT NULL) INSERT INTO t_pk VALUES (9999999,9999999) SELECT DUMP(col1),DUMP(col2) FROM t_pk DUMP(col1) DUMP(col2) --- --- Typ=2 Len=5: 196,10,100,100 Typ=2 Len=5: 196,100 在Oracle中,NUMBER存储为归一化为0.01 <= N <1的数值的十进制数字. 1并以指数为前缀. 在上面的例子中: 整数以十进制读数00.09 99 99 99 *(100 ^ 4)= 9,999,999 满足所请求精度所需的位数越多,当然会存储的数字越多. 当您将精确值插入精度较低的列时,它只会舍入到列的精度并存储为圆形. 因此,声明列NUMBER(38)在性能上是安全的,因为它意味着没有超过NUMBER(7,0)的开销(对于适合两种类型的数字). 但是,如果您的PRIMARY KEY本质上是整数,则最好将精度指定为0,以确保没有小数值到达您的表. 更新: @Mac还指出客户端可能依赖列数据类型来计算值域. 如果您的应用程序需要INT32,您应该使您的号码为NUMBER(9)或更低(或您的客户认为可转换为Int32的任何类型). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- ruby-on-rails – 通过http标头传递真实性令牌
- ruby-on-rails-3 – 在Rails中建立关系?
- Dojo+springMVC+spring3.1+hibernate4.1整合
- c# – 使用MVC,IMG标记,Url.Action和TempData的I
- ]解决JBPM图形流程设计器的gpd.xml文件的中文乱码
- Swift - 各种手势检测大全(UIGestureRecognizer
- swift中的手势
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运
- configure: error: xml2-config not found. Plea
- c# – 与BlockingCollection集成时,Parallel.For
热点阅读