-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索引。這是真的嗎? –