2

我目前正在开发一个需要将 10 到 20 位数值存储到数据库中的应用程序。

我的问题是,我应该使用什么数据类型?该数字用作主键,因此数据库的性能对我的应用很重要。在 Java 中,我使用这个数字和 BigDecimal。

4

2 回答 2

5

从手册中引用:

numeric:小数点前最多131072位;小数点后最多 16383 位

http://www.postgresql.org/docs/current/static/datatype-numeric.html

据我所知,131072 位数字应该可以满足您的需求。

编辑:
回答有关效率的问题:

第一个也是最重要的问题是:该列中存储了什么样的数据以及如何使用它?

  • 如果是数字,则使用数字。
  • 如果不是数字,请使用 varchar。

永远不要在字符列中存储(实数)数字!

2如果您需要按该列排序,如果您使用字符数据类型(例如将在 之后排序10),您将不会满足于您得到的结果

回到效率问题。我认为这主要是您关心的空间效率。您可以自己计算值的空间要求。

还记录了数字数据类型的存储要求:

实际存储要求是每组四个十进制数字两个字节,加上五到八个字节的开销

因此,对于 20 位数字,这将是最多 10 个字节加上 5 到 8 个字节的开销。所以最大。18 个字节。

要在 varchar 列中存储 20 位数字,您需要 21 个字节。

所以从空间“效率”的角度来看,数字略好一些。但这绝不应该影响您的决定,因为数据类型的选择应该由列内容的要求驱动。

从性能的角度来看,我也不认为会有很大的不同。

于 2012-03-12T23:07:56.533 回答
1

尝试 BIGINT 而不是 NUMERIC。它应该可以工作。

http://www.postgresql.org/docs/current/static/datatype-numeric.html

于 2012-03-12T20:29:17.630 回答