【发布时间】:2012-07-31 11:05:28
【问题描述】:
我应该为 postgresql 数据库表中的唯一键(例如用户的 ID)选择哪种数据类型?
bigint 是一个吗?
谢谢
【问题讨论】:
标签: postgresql database-design data-warehouse sqldatatypes
我应该为 postgresql 数据库表中的唯一键(例如用户的 ID)选择哪种数据类型?
bigint 是一个吗?
谢谢
【问题讨论】:
标签: postgresql database-design data-warehouse sqldatatypes
使用 serial 类型自动增加唯一 ID。
如果您计划拥有超过 20 亿个条目,请使用 bigserial。 serial 是 MySQL 的 AUTO_INCREMENT 的 PostgresSQL 等价物。
【讨论】:
serial 并通过 API 将此 ID 公开,那么您就可以让任何试图从您的网站上抓取数据的人变得轻松。
bigint(或bigserial,如果您需要自动递增键)就可以了。
如果知道对于确定您不会加载太多行,您可以考虑integer(或常规serial)并可能节省一些硬盘空间。
【讨论】:
根据this answer,当前推荐的执行自动递增唯一ID 的方法是使用generated as identity 语法而不是serial。
这是一个例子:
-- the old way
create table t1 (id serial primary key);
-- the new way
create table t2 (id integer primary key generated always as identity);
【讨论】: