-1
我应该使用数字数据格式的精度吗?我知道它确保可移植性,但使用精度的其他优点是什么?它对索引有影响吗?在ORACLE中使用NUMBER数据格式的精度有什么优势?
我应该使用数字数据格式的精度吗?我知道它确保可移植性,但使用精度的其他优点是什么?它对索引有影响吗?在ORACLE中使用NUMBER数据格式的精度有什么优势?
优势进行了详细的说明文档中:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#i16209
当你指定数字字段,它是指定 精度和规模是一个好主意。
这提供了额外的输入完整性检查。
精度和数字的规模有没有对指数造成任何影响,存储和查询的速度。
列中值的大小可能会影响索引大小和速度。
但几乎没有人知道,Oracle以不同的宽度在的磁盘上存储数字 - 不是固定的witdth格式。
它可以与vsize
功能的帮助下,这使磁盘上的大小的值以字节为单位进行检查:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions213.htm
下面是一个简单的实验:
create table my_numbers(
my_number number
);
insert into my_numbers values(1);
insert into my_numbers values(9);
insert into my_numbers values(99);
insert into my_numbers values(999);
insert into my_numbers values(9999);
insert into my_numbers values(99999);
insert into my_numbers values(999999);
commit;
select my_number, vsize(my_number)
from my_numbers;
MY_NUMBER VSIZE(MY_NUMBER)
---------- ---------------------------------------
1 2
9 2
99 2
999 3
9999 3
99999 4
999999 4
现在:
UPDATE my_numbers set my_number = my_number + 1;
commit;
select my_number, vsize(my_number)
from my_numbers;
MY_NUMBER VSIZE(MY_NUMBER)
---------- ---------------------------------------
2 2
10 2
100 2
1000 2
10000 2
100000 2
1000000 2
如您所见,声明的精度和刻度对数字占用的磁盘空间没有任何影响。
我相信这样的问题对于SO – Aleksej
来说过于宽泛如果需要的话,您可以存储小数点。 –
@a_horse_with_no_name,我的一位朋友说它加快了ups索引。这是真的吗? –