Ale*_*ole 36
使用的存储取决于实际数值,以及列的列精度和比例.
Oracle数据库以可变长度格式存储数字数据.每个值都以科学记数法存储,1个字节用于存储指数.数据库最多使用20个字节来存储尾数,尾数是包含有效数字的浮点数的一部分.Oracle数据库不存储前导零和尾随零.
考虑到这一点,特定数值数据值NUMBER(p)的列大小(以字节为单位),其中p是给定值的精度,可以使用以下公式计算:
Run Code Online (Sandbox Code Playgroud)ROUND((length(p)+s)/2))+1其中,如果数字为正数,则s等于零;如果数字为负数,则s等于1.
使用唯一表示存储零和正无穷大(仅在从第5版Oracle数据库导入时生成).零和负无穷大都需要1个字节; 正无穷大需要2个字节.
如果您可以访问My Oracle Support,请参阅注释1031902.6中的更多信息.
create table t42 (n number(10));
insert into t42 values (0);
insert into t42 values (1);
insert into t42 values (-1);
insert into t42 values (100);
insert into t42 values (999);
insert into t42 values (65535);
insert into t42 values (1234567890);
select n, vsize(n), dump(n)
from t42
order by n;
N VSIZE(N) DUMP(N)
------------ ---------- ---------------------------------
-1 3 Typ=2 Len=3: 62,100,102
0 1 Typ=2 Len=1: 128
1 2 Typ=2 Len=2: 193,2
100 2 Typ=2 Len=2: 194,2
999 3 Typ=2 Len=3: 194,10,100
65535 4 Typ=2 Len=4: 195,7,56,36
1234567890 6 Typ=2 Len=6: 197,13,35,57,79,91
Run Code Online (Sandbox Code Playgroud)
请注意,存储因值而异,即使它们都在一number(10)列中,并且两个3位数字可能需要不同的存储量.
| 归档时间: |
|
| 查看次数: |
34669 次 |
| 最近记录: |