使用 10-20 位数字值的数据类型 - PostgreSQL

use*_*868 3 database postgresql sqldatatypes digit

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

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

小智 7

引用手册:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

从性能的角度来看,我认为也不会有太大的差异。