PostgreSql将值存储为整数与字符类型的区别

13

我想在表中存储一个15位数。

就查询速度而言,我应该使用bigint还是varchar

此外,如果表中有数百万条记录,不同的数据类型是否会影响存储?


1
永远不要将数字存储在varchar列中。永远不要这样做。 - user330315
以下问题给出了答案:https://dev59.com/YnE95IYBdhLWcg3wWMlQ正如已经说过的,整数更快。 - Ghislain Rouvignac
2个回答

14

就空间而言,bigint 占用 8 字节,而 15 个字符的字符串将占用高达 19 字节(4 字节表头和多达 15 字节的数据,具体取决于其值)。此外,一般来说,对于数值操作,相等性检查应该稍微更快。除此之外,它主要取决于你打算如何使用这些数据。如果您打算使用数字/数学操作或根据范围查询,则应使用 bigint


4
您可以将它们存储为BIGINT,因为与varchar相比,使用INT进行比较速度更快。如果您期望有数百万条记录,则建议在该列上创建索引以加快数据检索速度。
您还可以查看此论坛
索引对整数类型的处理速度最快。字符类型可能会被存储为整数(猜测)。VARCHARs是可变分配的,当您更改字符串长度时,可能需要重新分配空间。
通常情况下,整数最快,然后是单个字符,然后是CHAR [x]类型,最后是VARCHARS。

5
CHARVARCHAR在Postgres中没有区别,除了CHAR值会用空格填充。因此,一般情况下VARCHAR更快。请注意,这与CHARVARCHAR的区别在其他数据库中的表现不同。 - Nick Barnes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接