Oracle中是否有一个数据类型,我可以在一个表机器整数中使用?我只是想将它用作唯一标识符,我不需要列可以为空。
我注意到INTEGER
数据类型映射到NUMBER(38)
,超过20个字节。
答案 0 :(得分:2)
Oracle目前没有数据类型存储为机器整数(C int?)。 Oracle编号存储为可变长度的字节串:
SQL> SELECT DUMP(99), DUMP(999999), DUMP(9999.99) FROM dual;
DUMP(99) DUMP(999999) DUMP(9999.99)
-------------------- ---------------------------- ----------------------------
Typ=2 Len=2: 193,100 Typ=2 Len=4: 195,100,100,100 Typ=2 Len=4: 194,100,100,100
第一个字节存储比例,其他字节是数字的基数100表示。
使用这种存储方法会丢失一些空间,但最终大部分时间的开销都会无法察觉。
对于标识符少于100亿的列,您可以使用NUMBER(10),最多需要6个字节。
答案 1 :(得分:0)
Universal Unique Identifier (UUID)怎么样?
CREATE table test
(
colguid RAW(16) default SYS_GUID()
)