Oracle 如何存储整数?

How does Oracle store integers?

我的任务是使用 AWS Schema Conversion Tool 将一些 Oracle 数据库转换为 Postgresql。 Oracle 只有 Number[(precision[scale])] 类型。看起来 Oracle 使用定点存储整数。许多 ID 列被定义为 Number(19,0),SCT 正在将其转换为 Numeric(19,0)

我什至看到一个(到目前为止)简单的 Number 被转换为 Double Precision

Postgres 具有适当的标量整数类型,例如 bigint

乍一看,与简单整数相比,将整数存储为定点数似乎在存储和时间方面都非常低效。

我是否遗漏了什么,Oracle 是否将它们存储为有效的标量整数?

出于兴趣,Oracle 中简单 ID 列的最佳类型是什么?

Oracle 的数字数据类型是可变长度数据类型,这意味着值 1 使用的存储(和内存)少于 123456789

理论上 number(19,0) 应该映射到 bigint,但是 Oracle 的 number(19,0) 允许存储像 9999999999999999999 这样的值,这会超出 [=13= 的范围] 在 Postgres 中。

bigint 可以存储的最大值是 9223372036854775807 - 如果这对你来说足够了,那么坚持使用 bigint

如果你真的需要更高的值,你将不得不硬着头皮在 Postgres 中使用 numeric