postgresql varchar和int作为PK是否存在效率差异

ffscu2ro  于 2022-12-26  发布在  PostgreSQL
关注(0)|答案(1)|浏览(237)

有人能告诉我使用varchar作为PK是个好主意吗?我的意思是它的效率更低还是等于int/uuid?例如:汽车VIN我想使用它作为PK,但我不确定它是否会被索引或作为FK工作,或者可能有一些陷阱。

hjzp0vay

hjzp0vay1#

这取决于您要存储哪种类型的数据。
在某些情况下(我认为在大多数情况下),最好使用基于整数的主键:

  • 例如,bigint只需要8个字节,而varchar可能需要更多的空间,因此,varchar比较通常比bigint比较开销更大。
  • 在连接表时,使用基于整数的值而不是字符串连接它们会更有效
  • 一个基于整数的键作为唯一键更适合于表关系。例如,如果你要把这个主键作为一个单独的列存储在另一个表中。同样,varchar也需要在其他表中有更多的空间(见p.1)。

这个post on stackexchange比较了一个特定例子中的非整数类型的主键。

相关问题